Тайм-аут установки сокета UDP

Я пытаюсь установить тайм-аут 100 мс на UDP-сокете. Я использую C. Я разместил соответствующие фрагменты моего кода ниже. Я не уверен, почему это не время ожидания, а просто зависает, когда это не 'т получить сегмент. Работает ли это только на сокетах, которые не связаны с помощью метода 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++;
}

Ответы на вопрос(2)

Ваш ответ на вопрос