Ich experimentiere mit timeouts bei blocking Sockets.
Das klappt prima, er bricht den recv() nach 5 Sekunden ab.
Nur wenn ich danach den timeout zurücksetzen will, so dass er nicht mehr abbricht, dann geht das nicht.
Bricht immer sofort ab, sprich er wartet tatsächlich 0ms.
Soweit ich es bei MSDN gelesen habe, sollte 0 aber soviel wie kein timeout heissen.
Wie bringe ich ihn dazu den timeout aufzuheben, bzw. auf default zurückzusetzen?
Code:
int timeout = 5000;
long rc = 0;
char buffer[101];
setsockopt(Socket,SOL_SOCKET,SO_RCVTIMEO,(char*)&timeout,sizeof(int));
rc = recv(Socket,buffer,100,0);
Das klappt prima, er bricht den recv() nach 5 Sekunden ab.
Nur wenn ich danach den timeout zurücksetzen will, so dass er nicht mehr abbricht, dann geht das nicht.
Code:
timeout = 0;
setsockopt(Socket,SOL_SOCKET,SO_RCVTIMEO,(char*)&timeout,sizeof(int));
rc = recv(Socket,buffer,100,0);
Bricht immer sofort ab, sprich er wartet tatsächlich 0ms.
Soweit ich es bei MSDN gelesen habe, sollte 0 aber soviel wie kein timeout heissen.
Wie bringe ich ihn dazu den timeout aufzuheben, bzw. auf default zurückzusetzen?