2011-08-10 113 views
0

我已經開始使用套接字編程的Android項目。平臺是Android 3.0。由於平臺要求,我在AsyncTask中應用套接字操作。Android 3.0套接字響應延遲

我連接到服務器,發送命令成功,但問題是我收到的響應不完整。發送命令後,我必須等待響應完成,否則只是部分響應。我發現當我在調試模式下等待的時候,我得到了完整的響應,在等待下一行代碼之前,我等待了一段時間,然後使用響應變量,並獲得了預期的全部結果。

我試圖把一個計時器

Timer myTimer = new Timer(); 

myTimer.wait(2000); 

但只是使整個反應不能工作。任何建議將不勝感激。

+0

您是否正在使用某種哨兵值來向另一端表明響應已完成? –

+0

@Shane Wealti 沒有在我身邊專門派出價值,但總是喜歡像命令提示行指示的開始: 服務器名稱> – honour

回答

0

首先,你不應該有這個問題。網絡連接可能有問題,因爲任何平臺的延遲量都不正常。但是如果你想要以編程的方式解決它,請繼續閱讀。

你不希望使用一個計時器,因爲:

一)即使在等待你不能確定你已經得到的值,之後

b)您會如果你很快獲得價值,就會不必要地放慢速度。

更好的選擇是讓一些代碼檢查循環中接收到的值,看看它是否完整,一旦完成,就移動到下一位。

+0

你的建議的解決方案是唯一有效的,如果我知道我是怎樣的反應每次都會得到。我現在知道數據已經完整,因爲我處於測試環境中,並且所有內容都是靜態的,所以您的建議不適用於實時解決方案。但是非常感謝您的時間。我很感激。 – honour

+0

只需添加一個超時時間 - 如果這麼多秒鐘過去了,並且您還沒有收到完整數據包或者沒有完成任何進度,則假設發送出錯並繼續前進。 – wohanley

+0

我不能只是假設int傳輸錯誤,只是繼續前進。我需要處理其他與此相關的事情。 – honour