Salve a tutti.. lavorando coi socket in C ho impostato un timeout su un socket utilizzando la funzione
codice:
setsockopt(sock, SOL_SOCKET, SO_RCVTIMEO, &tv, sizeof(tv))
di modo che poi andavo a controllare lo scadere del timeout o meno nel seguente modo
codice:
numByteRcv=recvfrom(sock,(int*)&childPort,sizeof(int),0,(struct sockaddr *)&serverInfo,&len2);
if(numByteRcv<0) {
if(errno == EWOULDBLOCK) {
printf("Socket timeout in ricezione."); continue; }
else { printf("error in recv() function.\n"); continue; }
}
questo tipo di controllo però sembra non funzionare se applicato alle recvfrom che si trovano in un blocco di codice nel quale è stata usata una select per realizzare I/O multiplexing.
Sapreste spiegarmi il perchè? soluzioni a riguardo per far funzionare il timeout?
N.B. So che è possibile impostare timout anche mediante la select ma da quello che ho letto mi pare di capire che funzionerebbe in modo diverso..