in reply to Perl Socket time out too small

Doesn't the Timeout option for the IO::Socket::INET constructor work for you?

-David

Replies are listed 'Best First'.
Re^2: Perl Socket time out too small
by h3x (Acolyte) on Oct 24, 2007 at 07:38 UTC
    David i dont understand your question....kindly rephrase... I have the IO::Socket::INET installed but it doesnt increase the time out.
      You normally wouldn't use IO::Socket directly.

      If you want a TCP socket, you'd use IO::Socket::INET which is a sub-class of IO::Socket.

      The constructor of IO::Socket::INET takes as parameters a "flattened hash" of arguments. Like so:

      my $sock = IO::Socket::INET->new( OptionFoo => 1, OptionBar => 'something', OptionBaz => 10 );

      If you read the IO::Socket::INET documentation, you'll see that one of the options mentioned is called 'Timeout', and is likely the option you'll need to change.

      I'd imagine something like:

      use strict; use warnings; use IO::Socket::INET; my $sock = IO::Socket::INET->new( PeerAddr => '123.45.67.89', # IP address PeerPort => '2000', # port Timeout => '60' # timeout in seconds ); # rest of your code using $sock.

      Is that easier to understand ?

      -David

        It's possible to call timeout() on $sock as well.
        $sock->timeout(60);
        If you want to know whether it runs on a timeout or not:
        while ( 1 ) { while (my $r = $sock->accept) { # process } if ($! == &Errno::ETIMEDOUT) { warn "Server runs on a timeout" } }