2015-01-13 87 views
0

我已經通過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將不會進一步掛起。任何線索爲什麼這是必需的?

+0

你正在使用的是:TCP套接字還是UDP套接字? – EJP

+0

我正在使用TCP套接字。我還發現,在recv之前添加一些延遲工作正常。 – nerd

+0

它不應該有絲毫差別,除非你處於非阻塞模式,在這種情況下,你應該使用'select()'而不是睡眠。 – EJP

回答

0

在recv解決此問題之前添加一些延遲(100 ms)。但我不知道爲什麼會出現這種情況的確切原因。