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++;
}

questionAnswers(2)

yourAnswerToTheQuestion