Ok, grazie mille!! Adesso ricevo i giusti valori!!
L'utilizzo di sizeof() è giusto nella recv ma non nella send! Infatti ho provato a sostituirlo anche nella recv ma con pessimi risultati.
Però mi si è manifestato un altro problema.
La mia recv è inclusa in un ciclo iterativo e non si blocca in attesa di un nuovo messaggio,e così mi viene analizzata in continuazione la stringa in cui dovrebbe essere memorizzato il nuovo messaggio.
Aggiungo il codice usato per creare il socket...non mi sembra di aver specificato da nessuan parte che volevo un socket non bloccante!
codice:
WORD wVersionRequested = MAKEWORD(2,2);
WSADATA wsaData;
int wsastartup = WSAStartup(wVersionRequested, &wsaData);
listenSocket = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
Server_addr.sin_family = AF_INET;
Server_addr.sin_addr.s_addr = inet_addr("127.0.0.1");
Server_addr.sin_port = htons(port);
if (bind(listenSocket,(LPSOCKADDR)&Server_addr,sin_size) < 0)
printf("Server: errore durante la bind.\n");
ls_result = listen(listenSocket, 1);
connessione = accept(listenSocket, (struct sockaddr *)&Client_addr, &sin_size);
r=recv(connessione, risposta, sizeof(risposta), 0);