我正在將基於套接字的應用程序從Linux移植到Windows CE 6.0。我遇到了一行代碼,它爲接收超時設置了套接字選項。用於Windows CE的端口setsockopt()與RCVTIMEO
struct timeval timeout = 200; timeout.tv_usec = 200000; setsockopt(mySock, SOL_SOCKET, SO_RCVTIMEO, (char *)&timeout, (socklen_t) sizeof(timeout));
我尋找可能的移植實現,並且能找到這兩個線程相關的。 setsockopt() with RCVTIMEO is not working in windows mobile5和 Set timeout for winsock recvfrom
設定接收超時爲200毫秒之後,存在到的recv()的調用,用於從遠程IP(發送者)接收數據。 清楚地解釋第一個鏈接產生一個線程並等待它,但200ms看起來太少,因爲發件人發送約10秒。 第二個鏈接的select()建議是我添加到我的代碼中的,但行爲非常不一致。有時它不會收到數據包,有時會收到1個,有時甚至更多但現有的實現在Linux上正常工作。
我在做正確的移植嗎?任何人都可以指出可能的錯誤或提出建議嗎?
謝謝!
您是否考慮添加一些錯誤檢查?例如到'setsockopt()'調用? – EJP