我已經通過USB在Android設備和Windows主機之間建立了TCP/IP套接字連接。用於連接的端口是8000/8001。這種通信模式在Windows 7和其他生態系統中運行得非常好,而在Windows XP 32位上,「recv」API無限期地掛起。套接字recv在Windows XP中掛起
我寫了一個示例程序,其中服務器和客戶端在Windows XP主機上運行,並且工作正常,但是當涉及到USB時,就會出現問題。我使用了一個嗅探工具「USB analyzer」工具來嗅探來自設備的數據,並看到數據傳入設備,但不知何故recv API無法捕獲它。
我所使用的代碼是存在於下面的鏈接: http://www.tenouk.com/Winsock/Winsock2example9.html
謝謝, 書呆子
編輯:僅在Windows XP 32位,而不是在64位發生此問題。
編輯2:我發現這個黑客攻擊,建立連接後立即服務器將發送一個虛擬數據,客戶端將捕獲它。如果這樣做,那麼recv將不會進一步掛起。任何線索爲什麼這是必需的?
你正在使用的是:TCP套接字還是UDP套接字? – EJP
我正在使用TCP套接字。我還發現,在recv之前添加一些延遲工作正常。 – nerd
它不應該有絲毫差別,除非你處於非阻塞模式,在這種情況下,你應該使用'select()'而不是睡眠。 – EJP