Forum Webscript.Ru

Программирование => Perl => Тема начата: StealtH2606 от 26 Сентября 2004, 15:24:33

Название: Помогите разобраться с пингом
Отправлено: StealtH2606 от 26 Сентября 2004, 15:24:33
Вообщем такая ситуевина, нужно пинговать несколько определенных хостов в сети.

Есть код:


if(&ping($host)){
print "Yes\\n";
}else{
  print "No\\n";}


sub ping($host)
{
use Net::Ping;
 $p=Net::Ping->new();
 $p->hires();
 ($ret, $duration, $ip) = $p->ping($host, 5.5);
  if($ret)
  {
   for ($i=0;$i<=$num_times;$i++)
   {
    $p->hires();
    ($ret, $duration, $ip) = $p->ping($host, 5.5);
    $ping_time+=$duration;
   }
   $ping_time=$ping_time/$i;
   $p->close();
   return 1;
  }else {
   $p->close();
   return 0;
}

так вот при $host=\'реально существующий хост\' функция возвращает 0, в обратном случае тоже самое.
Второй вопрос:
при ответе пингуемого хоста время пинга $ping_time имеет очень жуткие значения, т.е. в 3-5 раз больше чем при пинге системной командой.

Помогите плиз, люди добрые, может где-то ошибочка или недоглядел чего.

И еще вопрос :), как с помощью перла определить тип прокси сервера(SOCKS4, SOCKS4a, SOCKS5), буду сильно признателен если подкините кусочек кода или ссылку на литературу :D
Название: Помогите разобраться с пингом
Отправлено: VVP от 19 Июля 2006, 11:28:10
Уважаемый StealtH. Я проанализировал приведенный код. Вообще-то все правильно.
Ну не может эта функция возвращать 0 при существующем хосте. Возможно этот хост недоступен. Не забудьте проинициализировать переменную $num_times=... А время пинга завышено скорее всего из-за, что
Net::Ping->new([$proto [, $def_timeout [, $bytes]]]);

Create a new ping object. All of the parameters are optional. $proto specifies the protocol to use when doing a ping. The current choices are ``tcp\'\', ``udp\'\' or ``icmp\'\'. The default is ``udp\'\'.

Попробуй изменить new(icmp,1.5). Должен шустрить быстрее
Название: Помогите разобраться с пингом
Отправлено: arto от 19 Июля 2006, 12:00:42
With the "tcp" protocol the ping() method attempts to establish a connection to the remote
host\'s echo port.  If the connection is successfully established, the remote host is considered reachable.