18/06/07 8:34
iGuLy
Questa è la parte del client che quando la faccio partire si chiude subito, però nella compilazione non mi da errori.
//Includo le librerie
#include <stdio.h>
#include <winsock.h>
int bytesInviati;
int bytesRicevuti = SOCKET_ERROR;
char messaggio[32] = "Ciao server!!!";
char recvbuf[32] = "";
//Funzione main
int main()
{
WSADATA wsaData;
SOCKET mysocket;//Creo una variabile socket
int iResult = WSAStartup(MAKEWORD(2 ,2), &wsaData);
if (iResult != NO_ERROR) {
printf("Errore nell'inizializzazione!!!\n"
system("pause"
return 0;
mysocket = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);//Do un valore alla socket
if (mysocket == INVALID_SOCKET) {//Mi assicuro che non ci siano errori
printf("Errore alla socket(): %ld\n", WSAGetLastError() );
system("pause"
return 0;
}
//Creo u nuovo elemento sockaddr per connettermi al server
sockaddr_in clientService;
clientService.sin_family = AF_INET;
clientService.sin_addr.s_addr = inet_addr("127.0.0.1"
clientService.sin_port = htons(2000);
if (connect(mysocket, (SOCKADDR*) & clientService, sizeof(clientService)) == SOCKET_ERROR) {
printf("Connessione fallita.\n"
WSACleanup( );
system("pause"
return 0;
}
printf("Connesso al server.\n"
WSACleanup( );
system("pause"
return 0;
}
bytesInviati = send(mysocket, messaggio, strlen(messaggio), 0 );//Invio il messaggio
printf( "Bytes inviati: %ld\n", bytesInviati );
if ( bytesRicevuti == 0 ||//Controllo che non ci siano errori nel ricevere i dati
(bytesRicevuti == SOCKET_ERROR && WSAGetLastError()== WSAECONNRESET ))
{
bytesRicevuti = recv( mysocket, recvbuf, 32, 0 );
if ( bytesRicevuti == -1 ) {
printf( "Connessione chiusa.\n"//Si chiude la connessione
system("pause"
return 0;
}
if (bytesRicevuti < 0) {//Ricevo i dati
printf( "Bytes Ricevuti: %ld\n", bytesRicevuti);
system("pause"
return 0;
}
}
closesocket(mysocket);//Chiudo la connessione
WSACleanup();
}
Qualcuno può aiutarmi?
//Includo le librerie
#include <stdio.h>
#include <winsock.h>
int bytesInviati;
int bytesRicevuti = SOCKET_ERROR;
char messaggio[32] = "Ciao server!!!";
char recvbuf[32] = "";
//Funzione main
int main()
{
WSADATA wsaData;
SOCKET mysocket;//Creo una variabile socket
int iResult = WSAStartup(MAKEWORD(2 ,2), &wsaData);
if (iResult != NO_ERROR) {
printf("Errore nell'inizializzazione!!!\n"
system("pause"
return 0;
mysocket = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);//Do un valore alla socket
if (mysocket == INVALID_SOCKET) {//Mi assicuro che non ci siano errori
printf("Errore alla socket(): %ld\n", WSAGetLastError() );
system("pause"
return 0;
}
//Creo u nuovo elemento sockaddr per connettermi al server
sockaddr_in clientService;
clientService.sin_family = AF_INET;
clientService.sin_addr.s_addr = inet_addr("127.0.0.1"
clientService.sin_port = htons(2000);
if (connect(mysocket, (SOCKADDR*) & clientService, sizeof(clientService)) == SOCKET_ERROR) {
printf("Connessione fallita.\n"
WSACleanup( );
system("pause"
return 0;
}
printf("Connesso al server.\n"
WSACleanup( );
system("pause"
return 0;
}
bytesInviati = send(mysocket, messaggio, strlen(messaggio), 0 );//Invio il messaggio
printf( "Bytes inviati: %ld\n", bytesInviati );
if ( bytesRicevuti == 0 ||//Controllo che non ci siano errori nel ricevere i dati
(bytesRicevuti == SOCKET_ERROR && WSAGetLastError()== WSAECONNRESET ))
{
bytesRicevuti = recv( mysocket, recvbuf, 32, 0 );
if ( bytesRicevuti == -1 ) {
printf( "Connessione chiusa.\n"//Si chiude la connessione
system("pause"
return 0;
}
if (bytesRicevuti < 0) {//Ricevo i dati
printf( "Bytes Ricevuti: %ld\n", bytesRicevuti);
system("pause"
return 0;
}
}
closesocket(mysocket);//Chiudo la connessione
WSACleanup();
}
Qualcuno può aiutarmi?
aaa