2
私はアンドロイド2.3.3用のアンドロイドソケットクライアントアプリケーションを作成しました。 これはXML要求を送信し、応答をcobolソケットサーバーから受信します。Androidソケットは常にタイムアウトで終了する
アプリケーションは完全に正常に動作します。私の問題は、クライアントアプリケーションがすべてのデータを読み込んだら、何らかの理由でタイムアウト制限を待っています。
相続コード:
Socket socket = new Socket(serverIpAddress, serverPort);
socket.setSoTimeout(2000);
PrintWriter out = new PrintWriter(new BufferedWriter(new OutputStreamWriter(socket.getOutputStream())), true);
String request = ("Some XML Request");
out.println(request);
out.flush();
BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
Log.d("Nicklas", "Reader Oprettet");
Vector<String> v = new Vector<String>();
int i = 0;
Boolean KeepGoing = true;
while (KeepGoing)
{
try
{
String lol = in.readLine();
if (lol == null) { KeepGoing = false; }
v.add(new String(lol));
i++;
}
catch (Exception e)
{
Log.d("NickEEEXX", e.toString());
KeepGoing = false;
}
}
それは常に例外「java.net.SocketTimeoutException」と、キャッチで終了 - それが送られ、右のデータを受け取った場合であっても。これにより、プログラムが大幅に遅くなります。
このセクションのGUIを変更する必要があるため、このコードをスレッドではなくメソッドとして実行しています。
誰もがタイムアウトを待つ理由はありますか?
私は 'if(lol == ""){KeepGoing = false; } 'でも違いはありません。 – user1285334
**私はこれを解決する一つの方法を考え出しました。私が返すXML応答はいつもで終わるので、私は単にlol(readlineの変数)にそれが含まれているかどうかを尋ねます。 ** – user1285334
文字列で '=='演算子を使用できないことはご存知でしょうか?私は時々それを逃す。 – josephus