2011-08-13 73 views
0

我想通過使用setsockopt()API與so_rcvtimeo選項設置時間設置爲5秒超時套接字描述符上的recieve()調用。但是我的recieve()調用在沒有從服務器接收數據的5秒後沒有超時。setsockopt()與RCVTIMEO不工作在windows mobile5

可我知道,如果有在Windows中啓用任何設置移動5得到這個工作或者是有任何其他方式在Windows中實現這種移動5 /掌上電腦

感謝和問候

+0

?如果使用WSASocket函數創建套接字,則dwFlags參數必須設置WSA_FLAG_OVERLAPPED屬性,以使超時正常運行。否則超時將不會生效。 – EricLaw

+0

另外,請參閱http://social.msdn.microsoft.com/forums/en-US/vssmartdevicesnative/thread/65f6c563-07fa-4e36-8b71-438a15b942a9/ – EricLaw

+0

Eric,使用普通套接字()函數創建套接字 – Sal

回答

0

MSDN documentation for setsocketopt(備註部分)中明確規定:

下面的列表顯示了不支持setsockopt的 BSD選項。

SO_ACCEPTCONN
SO_RCVLOWAT
SO_RCVTIMEO < ---請注意,這一個
SO_SNDLOWAT
SO_SNDTIMEO
SO_TYPE

「解決辦法」 是做收到一個單獨的線程和等待在調用者的那個線程中,用一箇中止產生的線程的超時。

+0

感謝您的澄清。 – Sal

+0

但是,有沒有什麼辦法來實現這個接收超時沒有多線程編程?我有順序處理的電話 – Sal

+0

不是沒有多線程,沒有。您仍然可以通過讓線程指示調用方等待的事件來僞造同步行爲。 – ctacke