А (atento) wrote in ru_perl,
А
atento
ru_perl

Как читать из потока (файла?) с таймаутами?

Приветствую всех,
Пишу простой ftp-проксик через IO::Socket,
Создается два потока - $sock_remote и $client
После успешного подключения к внешнему ftp читаю ответ с сервера:
while( <$sock_remote> {
   print $client $_;
   print $_;
   last if( /^\s*$/);
}

На этом месте все виснет. Чтение по символьно из потока также зависает как только пытается прочитать еще один байт сверх того что сервер прислал в ответ (ждет следующий байт)
В итоге клиент, получив нормальный ответ от ftp, посылает уже авторизацию, но перл так и не может выйти из этого цикла :(

Вопросы:
1. Как отловить конец потока? length($sock_remote) не помогает
2. Может как-то с таймаутами читать - если чтение следующего символа зависает, то прекращать чтение и читать уже чо клиент говорит?
3. Может у кого готовый FTP-прокси есть на перле или другой (не CGI)
Subscribe
  • Post a new comment

    Error

    default userpic

    Your reply will be screened

    Your IP address will be recorded 

    When you submit the form an invisible reCAPTCHA check will be performed.
    You must follow the Privacy Policy and Google Terms of use.
  • 6 comments