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

Re: IO::Socket::IP

От Eugene Grosbein (2:5006/1) к Stas Mishchenkov

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


09 февр. 2022, среда, в 10:38 NOVT, 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 всегда успешен
SM> Hу, в данном случае точно не в нем дело.
EG>> и больше не пиши print "error $!\n" && return
SM> А как писать?

|| { print ... ; return ...; }

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

EG>> А по сути - работа таймаутов системно-зависима, что у тебя за версия
EG>> Perl и операционной системы?
SM> [fido@brorabbit ip]$ perl -v
SM> This is perl 5, version 28, subversion 3 (v5.28.3) built for
SM> x86_64-linux-thread-multi
SM> [fido@brorabbit ip]$ uname -a
SM> Linux brorabbit 5.4.81-std-def-alt1 #1 SMP Fri Dec 4 09:57:57 UTC 2020 x86_64
SM> GNU/Linux

Проблема воспроизводима? Hадо смотреть truss или что там у тебя есть
из трассировки системных вызовов.

Eugene
--
Поэты - страшные люди. У них все святое.
--- slrn/1.0.3 (FreeBSD)
* Origin: RDTC JSC (2:5006/1@fidonet)

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

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

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

FGHI-url этого письма: area://RU.PERL?msgid=grosbein.net+9eced0dc