Xpoint
   [напомнить пароль]

Net::Telnet проверка соединения

Метки: [без меток]
2007-04-11 13:03:16 [обр] Lyabah_Alexander(0/3)[досье]

$c = new Net::Telnet();
$c->open(...);
$c->print(..);

как мне проверить, что между опеном и принтом не порвалось соединение... Бо тут какаято несуразица... если рвеш сооединение в наглую, то первый принт проходит, на втором тупо вылитает скрипт, даже если ты в эвал положил. Errmode тоже не помог решить проблему, вобщем я в полном смятении. Кто чем может... Заранее спасибо..

спустя 10 часов [обр] Закиров Руслан(51/343)[досье]
Вам нужно что-то типа:
$SIG{'PIPE'} = sub { die "program unexpectedly closed pipe" };
спустя 1 день 21 час [обр] Lyabah_Alexander(0/3)[досье]
Класно, но в таком случае, я не знаю какой именно коннект разорвался...
спустя 2 дня 18 часов [обр] Закиров Руслан(51/343)[досье]

Точно не проверял, но мне кажется можно сделать так:

{
  local $SIG{'PIPE'} = 'IGNORE';
  print( CONNECTION, "...") or return "this connection had been closed by server";
}

Опять же можно использовать замыкание в обработчике сигнала:

my $connection = $i;
local $SIG{'PIPE'} = sub { die "connection #$connection had been closed by server" };
...
спустя 2 часа 56 минут [обр] Lyabah_Alexander(0/3)[досье]
сообщение промодерировано
#!/usr/bin/perl -w
use strict;
$|=1;
$SIG{'PIPE'} = sub{print "close pipe"};
use Net::Telnet;
my $c1 = Net::Telnet->new(Timeout=>60);
$c1->open(Host=>'127.0.0.1',Port=>'5000');
print "open";
sleep 5;
$c1->print('c');
за эти 5 сек я отключаю сервер... и никакого close pipe я не вижу, почему?
Powered by POEM™ Engine Copyright © 2002-2005