什么时候有人可以使用IO :: Socket :: Timeout的write_timeout函数?我正在测试以下代码
!使用警告;
使用IO :: Socket :: INET;
使用IO :: Socket :: Timeout;
使用IO :: Socket qw(:DEFAULT:crlf);
$ / = CRLF;
my $ object = IO :: Socket :: INET-> new(Proto =>'tcp',PeerAddr =>'www.example.com',PeerPort => '80');
IO :: Socket :: Timeout - > enable_timeouts_on($对象);
$ object - > read_timeout(2);
$ object - > write_timeout(5);
使用此代码,无论我为read_timeout设置什么值,socket都会在到期后关闭。 如果我将读取时间设置为非常大的值,并且我的代码没有将任何内容写入(打印)到套接字中,那么在write_timeout到期后是否应该关闭它?
答案 0 :(得分:0)
使用此代码,无论我为read_timeout设置什么值,socket都会在到期后关闭。如果我将读取时间设置为非常大的值,并且我的代码没有将任何内容写入(打印)到套接字中,那么在write_timeout到期后它是否应该关闭?
这些都不是确定空闲套接字的超时,而是超时操作。也就是说,如果您执行阻塞读取,它将最多阻止您在超时中指定的时间,并阻止写入相同。使用套接字选项SO_RCVTIMEO和SO_SNDTIMEO完成实现,因此您可以查找这些文档以获取更多详细信息。