私が取り組んでいるアプリケーションには2つの部分があります。サーバー部分は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