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