我正在處理的應用程序有兩個部分。服務器部分在Linux機器上運行。客戶端部分(一個Android應用程序)查詢服務器並獲得必要的響應。這兩個部分都是用Java編寫的,使用基於套接字的通信以及傳輸文本數據。讀取套接字數據的可靠方法
右鍵發送請求後,這裏是客戶端如何接收響應:
public static String ReadAvailableTextFromSocket(BufferedReader input) throws IOException {
if (input.ready() == false) {
return null;
}
StringBuilder retVal = new StringBuilder();
while(input.ready()) {
char ch = (char) input.read();
retVal.append(ch);
}
return retVal.toString();
}
然而,這似乎並沒有是可靠的。由於服務器響應時間或傳輸延遲,輸入並不總是準備就緒。
看起來像input.ready()不是等待獲取數據的正確方法。
我想知道是否有更好的方法來實現這一點。也許有一些我可以使用的標準做法。
謝謝你的幫忙。數據當前正在後臺線程中接收。不過,我認爲問題仍然沒有消失。一些線程,無論是後臺還是前臺,都需要等待一段時間,然後再決定數據不會來。我想我可能不得不介紹關於多久等待數據的概念。 – Peter 2012-02-24 19:03:23