думаю, что сеть можно считать рабочей, если вернулось не меньше 3-х из
4-х пакетов,
еще я бы проверил контрольную сумму принятого пакета, без
нее как-то не кошерно
еще я не очень понял, recvfrom не блокируется в
ожидании ответа?
получается, что как минимум первый вызов recvfrom
всегда пройдет в холостую,
я бы возможно попробовал отдельный сделать
поток для посылки пингов и отдельный поток для приема пакетов, возврат
из потока я не очень понимаю, как делать, так что сделал бы внешнюю
переменную, в которой бы записывалось кол-во принятых пакетов, при
этом вызов recvfrom сделал бы блокирующимся, но я не знаю как это
делать, по идее он по умолчанию такой, иначе придется делать холостой
цикл, который будет отъедать процессорное время.