Главная страница


ru.perl

 
 - RU.PERL ----------------------------------------------------------------------
 From : Elias Sergueeff                      2:5020/400     15 May 2003  20:57:24
 To : All
 Subject : IO::Socket & timeout
 -------------------------------------------------------------------------------- 
 
 Hello, All!
 
 Есть задачка...
 Почитал в инете, вроде все просто...
 Попробовал - не работает.
 Поднимите мне брови!
 
 В общен читаю нечто с сервера.
 Hадо как то организовать ... в общем если долго нет ответа,
 то прекратить читать.
 
 С чего нижеследующее всегда помирает по таймауту?
 
 use IO::Socket;
 use IO::Select;
 my $socket = IO::Socket::INET->new(PeerAddr => $server,
                                  PeerPort => $port,
                                  Proto    => 'tcp',
                                  Type     => SOCK_STREAM
                                  TimeOut  => $timeout);
 
 my $select = IO::Select->new($connect);
 binmode $socket;            # это убирал, не помогло
 $socket->autoflush(1);    # это убирал, не помогло
 unless ( $select->can_read( 100 ) ) {
   die "Timeout\n";
 };
 
 Или оно так и задумано?
 
 А вот так, Будет работать? :
 (я пробовал... не совсем так, в общем не получилось,
 но отзывы были что данный вариант - работает.)
 
    eval { local $SIG{__DIE__}  = 'DEFAULT';
           local $SIG{__ALRM__} = sub { die 'timeout!' };
           alarm(10);
           defined(recv(...)) or die "recv failed: $!";
           alarm(0);
    };
    alarm(0);
    if    ($@ =~ /^timeout!/) {  # timeout
      ...
    } elsif ($@ =~ /^recv failed:/) {  # recv error  ...
    } elsif ($@)   # unexpected eval error   ...
    }
 
 Я еще нарыл...
 примерчик такой... мааааленький.
 Hа пару страниц.
 Говорят он умеет таймауты ловить при чтении.
 
 WBR,
 Ilja
 --- ifmail v.2.15dev5
  * Origin: MTU-Intel ISP (2:5020/400)
 
 

Вернуться к списку тем, сортированных по: возрастание даты  уменьшение даты  тема  автор 

 Тема:    Автор:    Дата:  
 IO::Socket & timeout   Elias Sergueeff   15 May 2003 20:57:24 
Архивное /ru.perl/910447123b8f.html, оценка 3 из 5, голосов 10
Яндекс.Метрика
Valid HTML 4.01 Transitional