на главнуюВсе эхи RU.PERL
войти ?

IO::Socket::IP

От Stas Mishchenkov (2:460/5858) к Eugene Grosbein

В ответ на Заголовок предыдущего сообщения в треде (Имя Автора)


Hi, Eugene!

09 фев 22 13:46, Eugene Grosbein -> Stas Mishchenkov:

SM>> Имеем такой код:
SM>> my $sock = IO::Socket::IP->new(PeerAddr => $host,
SM>> PeerPort => $portaddress,
SM>> Timeout => 15,
SM>> Proto => 'tcp') || print "error $!\n" &&
SM>> return " $host - Error $!\n";
SM>> с некоторыми хостами, например, joesbbs.com:24554, может провисеть при
SM>> попытке соединения несколько часов. По таймауту не отваливается. Что я не
SM>> так делаю или как заставить его всё-таки выдавать ошибку по таймауту?

EG> Для начала перестань предполагать, что print всегда успешен

Ну, в данном случае точно не в нем дело.

EG> и больше не пиши print "error $!\n" && return

А как писать?

EG> print тоже может обломаться и вернуть ложь
EG> (вывод перенаправлен в файл и место кончилось, или вывод уходит
EG> в сетевой сокет и локальный файрвол зарезал соединение и т.д.)

EG> А по сути - работа таймаутов системно-зависима, что у тебя за версия
EG> Perl и операционной системы?

[fido@brorabbit ip]$ perl -v

This is perl 5, version 28, subversion 3 (v5.28.3) built for x86_64-linux-thread-multi

[fido@brorabbit ip]$ uname -a
Linux brorabbit 5.4.81-std-def-alt1 #1 SMP Fri Dec 4 09:57:57 UTC 2020 x86_64 GNU/Linux


Have nice nights.
Stas Mishchenkov.

--- Не откладывайте на завтра - кладите на всё уже сегодня.
* Origin: Lame Users Breeding. Simferopol, Crimea. (2:460/5858)

Ответы на это письмо:

From: Username
Заголовок следующего сообщения в треде может быть длинным и его придется перенести на новую строку

From: Username
Или коротким

FGHI-url этого письма: area://RU.PERL?msgid=2:460/5858+62036ffa