Re: [Network] Простой ICMP запрос

Alex Naumov alexander_naumov at opensuse.org
Fri Nov 21 19:12:56 EST 2014


2014-11-21 22:16 GMT+01:00 Ivan Riabtsov <ivriabtsov at gmail.com>:

> думаю, что сеть можно считать рабочей, если вернулось не меньше 3-х из
> 4-х пакетов,


Да, 75% конечно надежней, чем 50%, но если мы получили хотя бы... даже один
ответ, значит хост работает и отвечат. По количеству отстальных ответов
можно судить о качестве соединения.


> еще я бы проверил контрольную сумму принятого пакета, без
> нее как-то не кошерно


Да, она добавляется, но не проверяется при получении.
Значит ли это, что, если я ping'ую два хоста, то ответы могут просто
перемешаться?


> еще я не очень понял, recvfrom не блокируется в
> ожидании ответа?


Я просто добавил пока секундную задержку :)
Кстати, не подвесит ли блокировка процесс, при отсутствии ответов?


> получается, что как минимум первый вызов recvfrom
> всегда пройдет в холостую,


Да, сам не знаю как так получилось - конечно же recvfrom() и sendto() надо
поменять местами.



> я бы возможно попробовал отдельный сделать
> поток для посылки пингов и отдельный поток для приема пакетов, возврат
> из потока я не очень понимаю, как делать, так что сделал бы внешнюю
> переменную, в которой бы записывалось кол-во принятых пакетов, при
> этом вызов recvfrom сделал бы блокирующимся, но я не знаю как это
> делать, по идее он по умолчанию такой, иначе придется делать холостой
> цикл, который будет отъедать процессорное время.
>
> Будет интересно посмотреть на код, но на сколько оправданно
распараллеливание потока (т.е. усложнение кода) в данном случае?
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.kernelnewbies.org/pipermail/kernel-russian/attachments/20141122/eb6efeea/attachment.html 


More information about the Kernel-russian mailing list