2014-11-23 87 views
0

什么时候有人可以使用IO :: Socket :: Timeout的write_timeout函数? !我测试下面的代码IO :: Socket :: Timeout中的write_timeout

C:\ Perl64 \ BIN

使用警告;

使用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);

$ object - > read_timeout(2);

$ object - > write_timeout(5);

有了这段代码,无论我为read_timeout设置了什么值,套接字在到期之后都会关闭。 如果我设置读取时间非常大的值,并且我的代码不写入(打印)任何东西到socket中,不应该在write_timeout过期后关闭吗?

回答

0

有了这段代码,无论我为read_timeout设置了什么值,套接字在过期之后都会关闭。如果我设置读取时间非常大的值,并且我的代码不会写入(打印)任何东西到socket中,在write_timeout过期后不应该关闭它吗?

这些没有超时来确定一个空闲套接字,而是超时的行动。也就是说,如果您执行阻止读取,它将至多阻止您在超时中指定的时间,并阻止写入。实现是通过套接字选项SO_RCVTIMEO和SO_SNDTIMEO完成的,所以你可以查阅这些文档以获得更多的细节。