1
我正在製作一個應用程序,哪兩個設備應該通過TCP套接字進行通信。一個設備是我的三星手機,另一個是仿真器。我將模擬器設置爲客戶端,將手機設置爲服務器。客戶端連接到電話並工作正常(發送和接收),但幾分鐘後它停止接收,但發送沒有問題。網絡部分有數百行代碼,其中有許多函數使得閱讀變得複雜,所以我決定不在這裏寫,但我懷疑問題來自模擬器本身。這意味着如果我使用真實設備而不是仿真器,這不會發生。網絡代碼的很多部分與服務器和客戶端類似,並且服務器正常運行。只有模擬器中的客戶端套接字停止接收。它可以發送(所以連接是活着的),我檢查線程。他們也活着。你是否同意這可能是模擬器的問題?套接字發送但在仿真器中沒有收到
謝謝但是您確定「未收到確認會導致進一步發送失敗,以便服務器不會收到新消息」嗎?所有的消息都傳遞給服務器,我在服務器端檢查這一點,而不是在客戶端。但你確定這個說法嗎? – user2808671 2014-08-30 11:14:31
是的,這是TCP的工作原理。如果確認沒有回到android內核,它會將連接標記爲斷開,並且進一步寫入將失敗。 – 2014-08-30 11:32:54
也許確認收到,但沒有其他數據包!我一遍又一遍地查看了整個代碼,但沒有發現任何導致服務器接收到但客戶端(模擬器)沒有收到的信息 – user2808671 2014-08-30 11:36:11