Ich lese vom Sockel mit recv
Funktion. Ich habe ein Problem, wenn keine Daten zum Lesen verfügbar sind. Mein Programm hört einfach auf. Ich habe festgestellt, dass ich Timeout mit select
Funktion einstellen kann. Aber sieht aus, dass das Timeout sich auf die select Funktion selbst auswirkt und recv
das nach dem select immer noch unstetig wartet.Einstellung Timeout zu recv-Funktion
fd_set set;
struct timeval timeout;
FD_ZERO(&set); /* clear the set */
FD_SET(s, &set); /* add our file descriptor to the set */
timeout.tv_sec = SOCKET_READ_TIMEOUT_SEC;
timeout.tv_usec = 0;
int rv = select(s, &set, NULL, NULL, &timeout);
if((recv_size = recv(s , rx_tmp , bufSize ,0)) == SOCKET_ERROR)
{
...
}
Wie recv
Funktion Rückkehr nach einigen timout fragen?
Dieses Codebeispiel einen Fehler hat ... die Zeile das liest: 'int rv = auswählen (s, & set, NULL, NULL, & Timeout);' sollte lesen 'int rv = auswählen (s + 1, & set, NULL, NULL, & Timeout);' – drbobdugan
Vielen Dank, Sie Wirklich richtig! 'nfds' ist der Dateideskriptor mit der höchsten Nummer + 1. –