0
我想设置一个套接字的超时,我已经创建使用ASIO提升没有运气。我发现下面的代码的其他地方网站上:设置流的ASIO超时
tcp::socket socket(io_service);
struct timeval tv;
tv.tv_sec = 5;
tv.tv_usec = 0;
setsockopt(socket.native(), SOL_SOCKET, SO_RCVTIMEO, &tv, sizeof(tv));
setsockopt(socket.native(), SOL_SOCKET, SO_SNDTIMEO, &tv, sizeof(tv));
boost::asio::connect(socket, endpoint_iterator);
超时保持在相对于话,5秒我要寻找一个在连接调用相同的60秒。我错过了什么?请注意,连接代码在所有其他情况下都可以正常工作(没有超时)。
谢谢。我刚才发现他们不适用于连接。我准备拼凑一个计时器来执行我自己的SIG处理。我更喜欢你的方式。 – mlewis54
好的很好:)这不是我的方式,它来自asio作者Chris Kohlhoff的例子。 – Ralf
这是一个很好的解决方案Ralf,我通常做同样的事情,我使用现有的asio :: io_service来定时器来处理我的超时。我唯一额外的补充是你可以绑定一个回调以在超时执行。如果你的系统想要/需要一个超时发生的通知来执行一些清理,重试或其他这样的事情而不停止套接字,那么你可以把它的代码放在定时器过期回调中。 – OcularProgrammer