소켓에서 읽기 전에 원하는 시간 제한과 함께 의 4 인수 버전을select
사용하여 읽을 소켓에서 데이터를 사용할 수 있는지 테스트합니다.
또한 IO::Select
모듈, 특히 IO::Select::can_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";
}
출처
https://stackoverflow.com/questions/22050250