Perl 使阻塞超时IO::套接字读取
我需要通过超时使阻塞套接字读取结束。我读了这个问题,了解到IO::Socket::INET不注意超时选项,并了解了使用Perl 使阻塞超时IO::套接字读取,perl,sockets,Perl,Sockets,我需要通过超时使阻塞套接字读取结束。我读了这个问题,了解到IO::Socket::INET不注意超时选项,并了解了使用eval/报警的解决方案。但是我在Windows上工作,并且报警不能正常工作。是否有其他解决方案?在从套接字读取数据之前,使用具有所需超时的来测试套接字上是否有要读取的数据 另请参阅模块,特别是IO::Select::can\u read($timeout)方法,以测试套接字读取是否会阻塞 例如: $read_timeout = 5.0; # seconds $socket =
eval
/报警的解决方案。但是我在Windows上工作,并且报警不能正常工作。是否有其他解决方案?在从套接字读取数据之前,使用具有所需超时的来测试套接字上是否有要读取的数据
另请参阅模块,特别是IO::Select::can\u read($timeout)
方法,以测试套接字读取是否会阻塞
例如:
$read_timeout = 5.0; # seconds
$socket = IO::Socket->new( ... ); # socket to read from
$selector = IO::Select->new;
$selector->add( $socket );
...
@ready = $selector->can_read( $read_timeout );
if (@ready > 0) {
$socket->read( $buffer, 128 ); # copy 128 bytes into $buffer
} else {
warn "data not available on socket now";
}
如何在Windows上使用套接字?超时
选项是关于建立套接字连接,而不是从已建立的连接读取数据。