It seems I had a similar problem...
The fact is that if the host is unreachable, the
timeout doesn't seems to work...
Or maybe the time out is only used once the TCP connections is done...
You could try to test if host is reachable before connecting or set your sig handler to control the time out 'by-hand'
(something like (courtesy of axion on QuestionExchange) :
#!/usr/local/bin/perl -w
use strict;
use IO::Socket;
{
my $timeout = 0;
my $sock = undef;
$SIG{ALRM} = sub {$timeout = 1; die};
eval {
alarm (2);
$sock = new IO::Socket::INET (PeerAddr => '10.1.1.18',
PeerPort
+=> 29,
);
alarm (0);
};
die "Can't open socket: timeout=$timeout\n" if ($timeout or !$sock);
print "I would print to the socket now, if I knew what I was connecte
+d
to\n";
close ($sock);
}
)
Or even modify the LWP Timeout method...
Posts are HTML formatted. Put <p> </p> tags around your paragraphs. Put <code> </code> tags around your code and data!
Titles consisting of a single word are discouraged, and in most cases are disallowed outright.
Read Where should I post X? if you're not absolutely sure you're posting in the right place.
Please read these before you post! —
Posts may use any of the Perl Monks Approved HTML tags:
- a, abbr, b, big, blockquote, br, caption, center, col, colgroup, dd, del, details, div, dl, dt, em, font, h1, h2, h3, h4, h5, h6, hr, i, ins, li, ol, p, pre, readmore, small, span, spoiler, strike, strong, sub, summary, sup, table, tbody, td, tfoot, th, thead, tr, tt, u, ul, wbr
You may need to use entities for some characters, as follows. (Exception: Within code tags, you can put the characters literally.)
| |
For: |
|
Use: |
| & | | & |
| < | | < |
| > | | > |
| [ | | [ |
| ] | | ] |
Link using PerlMonks shortcuts! What shortcuts can I use for linking?
See Writeup Formatting Tips and other pages linked from there for more info.