Perl 使阻塞超时IO::套接字读取

Perl 使阻塞超时IO::套接字读取,perl,sockets,Perl,Sockets,我需要通过超时使阻塞套接字读取结束。我读了这个问题,了解到IO::Socket::INET不注意超时选项,并了解了使用eval/报警的解决方案。但是我在Windows上工作,并且报警不能正常工作。是否有其他解决方案?在从套接字读取数据之前,使用具有所需超时的来测试套接字上是否有要读取的数据 另请参阅模块,特别是IO::Select::can\u read($timeout)方法,以测试套接字读取是否会阻塞 例如: $read_timeout = 5.0; # seconds $socket =

我需要通过超时使阻塞套接字读取结束。我读了这个问题,了解到IO::Socket::INET不注意超时选项,并了解了使用
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上使用套接字?
超时
选项是关于建立套接字连接,而不是从已建立的连接读取数据。