рассчитать правильное время ожидания ответа ARP Переполнение стека

У меня есть программа, которая отправляет пакеты arp на все хосты в сети, чтобы выяснить, какие из них работают, и до сих пор работает нормально.

У меня просто есть некоторые трудности с установкой правильного времени ожидания для ответа, пока я получил это:

struct timeval tv;
tv.tv_sec = 0;
tv.tv_usec = 10000; //0.01sec
if (setsockopt(sock_fd, SOL_SOCKET, SO_RCVTIMEO, &tv, sizeof(tv)) < 0) {
...
}

...

if ((bytes = sendto(sock_fd, ether_frame, packet_length, 0, (struct sockaddr *) &device, sizeof (device))) <= 0) {
//error handle
} else {
if ((bytes = recv(sock_fd, packet, sizeof(packet), 0)) <= 0) {
...
} else {
...

При запуске программы с установленным значением 0,01 с, я иногда получаю все ответы, а некоторые пропускают. Когда я увеличиваю значение, например 1сек я получаю все значения. Но так как существует много запросов на отправку, с 1секундами уходит огромное количество времени до его завершения.

Есть ли лучший способ рассчитать время ожидания для ответов? Вероятно, динамически?

0

Решение

Задача ещё не решена.

Другие решения


По вопросам рекламы [email protected]