Ich habe die folgende Funktion einrichten, um die Daten vom Server alle 2 Minuten zu erhalten. Zum ersten Mal rufe ich die Funktion an, die es zu funktionieren scheint, aber dann friert es bei dem recv
-Aufruf ein, der nie zurückkehrt. und müsste ich den Puffer bei jedem Anruf zuweisen, selbst wenn der Server nichts zu senden hat?Recv eingehenden Datenverkehr vom Server
#define RCVBUFSIZE 32
void Receive()
{
UINT totalBytesRcvd = 0, bytesRcvd = 0;
char buffer[RCVBUFSIZE]; /* Buffer for string */
/* Receive up to the buffer size (minus 1 to leave space for
a null terminator) bytes from the sender */
bytesRcvd = recv(sockClient, buffer, RCVBUFSIZE - 1, 0);
if (bytesRcvd)
{
buffer[bytesRcvd] = '\0';
MessageBox(0, buffer, 0, 0); //some way to display the received buffer
}
else if (bytesRcvd == SOCKET_ERROR)
{
return;
}
}
Hinweis: Ihre 'if (bytesRcvd)' Prüfung erfüllt die 'SOCKET_ERROR' Zustand (die -1), was bedeutet, Sie werden versuchen, schreiben Sie an‚Puffer [-1] ', wenn es einen Fehler und Anschließend geht es weiter in das Bollock-Land! –