2
请,示出了示例下面插座SO_RCVTIMEO超时是在C++/VC双设定值++
int val = 120000;
setsockopt(connSock,SOL_SOCKET,SO_RCVTIMEO,(char*)&val,sizeof(int));
我设定在接收超时120秒但它需要240秒。
我觉得超时是设定值的两倍。
怎么可能?
请,示出了示例下面插座SO_RCVTIMEO超时是在C++/VC双设定值++
int val = 120000;
setsockopt(connSock,SOL_SOCKET,SO_RCVTIMEO,(char*)&val,sizeof(int));
我设定在接收超时120秒但它需要240秒。
我觉得超时是设定值的两倍。
怎么可能?
SO_RCVTIMEO和SO_SNDTIMEO不适用于所有套接字操作,您应该使用非阻塞模式和select
。
该行为可能会在不同的操作系统配置上发生更改。 在我的系统上,在我设置在SO_RCVTIMEO中的值两倍后,超时值为connect
。一个简单的黑客就像在连接之前将SO_RCVTIMEO设置为x/2
,并在其工作后将其设置为x
,但正确的解决方案是使用select。
谈这个问题(阅读评论回答):
如何使用选择才达到期望的结果:
您是否检查以确保'setsockopt()'没有返回错误?你期待什么代码适用于超时?请提供一个[SSCCE](http://sscce.org),显示双倍行动时间。 – 2014-10-10 17:14:08