in reply to IO::Socket Timeouts
Another alternative that is commonly used is a select() for example:
my $timeout = 30; my $fdset = ""; vec($fdset, $connect->fileno, 1) = 1; while (1) { my $buffer; my $n = select($fdset,undef,undef,$timeout); if($n < 0) { carp("Select failed $n\n"); return undef; } elsif($n == 0) { carp("Timout expired\n"); return undef; } my $count = sysread($connect,$buffer,$buffer_size,0); # Should check the sysread's return value # Do we have a complete request? $data .= $buffer; last if(request_complete(\$data)); }
|
|---|