Limit czasu zestawu gniazd UDP
Próbuję ustawić limit czasu 100 ms na gnieździe UDP. Używam C. Opublikowałem poniżej fragmenty mojego kodu. Nie jestem pewien, dlaczego tak się nie dzieje, ale po prostu zawiesza się, gdy nie otrzymuje segmentu. Czy to działa tylko na gniazdach, które nie są powiązane za pomocą metody bind ()?
#define TIMEOUT_MS 100 /* Seconds between retransmits */
if ((rcv_sock = socket(PF_INET, SOCK_DGRAM, IPPROTO_UDP)) < 0)
DieWithError("socket() failed");
if ((rcv_sock = socket(PF_INET, SOCK_DGRAM, IPPROTO_UDP)) < 0)
DieWithError("socket() failed");
//set timer for recv_socket
static int timeout = TIMEOUT_MS;
setsockopt(rcv_sock, SOL_SOCKET, SO_RCVTIMEO,(char*)&timeout,sizeof(timeout));
if(recvfrom(rcv_sock, ackBuffer,sizeof(ackBuffer), 0,
(struct sockaddr *) &servAddr2, &fromSize) < 0){
//timeout reached
printf("Timout reached. Resending segment %d\n", seq_num);
num_timeouts++;
}