use Errno qw(EWOULDBLOCK);
eval{
alarm($time_out);
#发送包
$succ_bytes=$socket->send("$_") || die "send date err! $!";
print "发送字节数为:$succ_bytes/n";
#接收包
#从包头读取包总长度
sysread($socket,$head_str,7) || die "读取包头失败!/n";
$read_bytes = substr($head_str,2,5) - 7;
$recv_bytes = sysread($socket,$rbuf,$read_bytes) || die "读取包体失败!/n";
if (defined $recv_bytes) { # non-error
if ($recv_bytes > 0) { # read successful
$recv_bytes += 7;
$rbuf=$head_str.$rbuf;
print "接收到字节数:[$recv_bytes]/n";
print "接收到内容:[$rbuf]/n/n";
#print_pack($rbuf);
}
}elsif( $! == EWOULDBLOCK ){
print "句柄阻塞,请稍后尝试!/n";
} else {
# unexpected error
die "sysread() error: $!/n";
}
alarm(0);
};