<div dir="ltr"><div>На всякий случай отстальная часть кода<br>(к логике работы самого icmp не относится).<br><br>#include &lt;error.h&gt;<br>#include &lt;fcntl.h&gt;<br>#include &lt;unistd.h&gt;<br>#include &lt;sys/types.h&gt;<br>#include &lt;sys/utsname.h&gt;<br>#include &lt;sys/socket.h&gt;<br>#include &lt;netinet/in.h&gt;<br>#include &lt;netdb.h&gt;<br>#include &lt;string.h&gt;<br>#include &lt;errno.h&gt;<br>#include &lt;stdlib.h&gt;<br>#include &lt;stdio.h&gt;<br>#include &lt;resolv.h&gt;<br>#include &lt;netinet/ip_icmp.h&gt;<br><br>#define PACKETSIZE  64<br><br>void usage()<br>{<br>    printf(&quot;USAGE:\t  prog_name &lt;IP_address&gt;\n&quot;);<br>    exit(1);<br>}<br><br><br>int main(int argc, char *argv[])<br>{<br>    if(argv[1] == NULL)<br>        usage();<br><br>    if (ping(argv[1]) &gt; 0)<br>        printf(&quot;PING\t\tOK\n&quot;);<br>    else<br>        printf(&quot;PING\t\tNO_ANSWER\n&quot;);<br><br></div>    return 0;<br><div>}<br><br><br></div></div><div class="gmail_extra"><br><div class="gmail_quote">2014-11-21 14:15 GMT+01:00 Alex Naumov <span dir="ltr">&lt;<a href="mailto:alexander_naumov@opensuse.org" target="_blank">alexander_naumov@opensuse.org</a>&gt;</span>:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr"><div><div>Всем привет.<br><br></div>Начнем потихоньку? Вот [1] пример функции, которая отправляет 4 ICMP запроса (raw-сокет).<br>В качестве аргумента передаем ей строку с IP адресом.<br>Если получено больше одного ответа, то функция возвращает положительный ответ.<br>Предпологается, что функция используется по аналогии с ping(8).<br><br></div><div>Кто что думает об этом коде? Что можно улучшить?<br><br>Мне вот интересно, сколько по-вашему стоит получить ответов, чтобы быть уверенным, что<br>сеть работет без проблем и задержка с ответами не слишком большая? <br><br>Кто-нибудь может ясно объяснить, почему для корректной работы он требует права root?<br><br>Alex<br><br><br>[1]<span><a style="color:rgb(255,0,0);text-decoration:none" href="http://goo.gl/2eAH4C" target="_blank"> http://goo.gl/2eAH4C</a></span></div></div>
</blockquote></div><br></div>