<div dir="ltr"><br><div class="gmail_extra"><br><div class="gmail_quote">2014-11-21 22:16 GMT+01:00 Ivan Riabtsov <span dir="ltr">&lt;<a href="mailto:ivriabtsov@gmail.com" target="_blank">ivriabtsov@gmail.com</a>&gt;</span>:<br><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">думаю, что сеть можно считать рабочей, если вернулось не меньше 3-х из<br>
4-х пакетов, </blockquote><div><br></div><div>Да, 75% конечно надежней, чем 50%, но если мы получили хотя бы... даже один ответ, значит хост работает и отвечат. По количеству отстальных ответов можно судить о качестве соединения.<br> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">еще я бы проверил контрольную сумму принятого пакета, без<br>
нее как-то не кошерно</blockquote><div><br>Да, она добавляется, но не проверяется при получении.<br>Значит ли это, что, если я ping&#39;ую два хоста, то ответы могут просто перемешаться?<br> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">еще я не очень понял, recvfrom не блокируется в<br>
ожидании ответа?</blockquote><div><br></div><div>Я просто добавил пока секундную задержку :)<br>Кстати, не подвесит ли блокировка процесс, при отсутствии ответов?<br> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">получается, что как минимум первый вызов recvfrom<br>
всегда пройдет в холостую,</blockquote><div><br></div><div>Да, сам не знаю как так получилось - конечно же recvfrom() и sendto() надо поменять местами.<br><br> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">я бы возможно попробовал отдельный сделать<br>
поток для посылки пингов и отдельный поток для приема пакетов, возврат<br>
из потока я не очень понимаю, как делать, так что сделал бы внешнюю<br>
переменную, в которой бы записывалось кол-во принятых пакетов, при<br>
этом вызов recvfrom сделал бы блокирующимся, но я не знаю как это<br>
делать, по идее он по умолчанию такой, иначе придется делать холостой<br>
цикл, который будет отъедать процессорное время.<br><br>
</blockquote></div>Будет интересно посмотреть на код, но на сколько оправданно распараллеливание потока (т.е. усложнение кода) в данном случае?<br></div></div>