You shouldn't need a timeout on the connect, but rather, on any reads (and possibly writes) to/from the socket. Here's an example of some code that I recently used that makes use of the alarm() handler.

It does not check the result of the signal handler, but suffices to know that the signal handler fired, and broke out of the eval(), which is waiting for a response on the open socket. (In this case of the code, all I need to know is that the remote host sent something (anything), to indicate it received the packet I sent it. It's not extremely robust code, but it served my purposes for playing a .WAV file to a remote Windows-running PC).
sub play_remote_file { my $file = shift; my $sock = new IO::Socket::INET (PeerAddr => 'jcwren', PeerPort => 10666, Proto => 'tcp', ); return unless $sock; print $sock $file, "\n"; $SIG{ALRM} = \&timed_out; eval { alarm (30); my $buf = <$sock>; alarm (0); }; close ($sock); } sub timed_out { die "GOT TIRED OF WAITING"; }
--Chris

e-mail jcwren

In reply to (jcwren) Re: Timeout problem using IO::Socket by jcwren
in thread Timeout problem using IO::Socket by ChOas

Title:
Use:  <p> text here (a paragraph) </p>
and:  <code> code here </code>
to format your post, it's "PerlMonks-approved HTML":



  • 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:
    & &amp;
    < &lt;
    > &gt;
    [ &#91;
    ] &#93;
  • Link using PerlMonks shortcuts! What shortcuts can I use for linking?
  • See Writeup Formatting Tips and other pages linked from there for more info.