2
我爲Android 2.3.3製作了一個Android套接字客戶端應用程序。 它發送一個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;
}
}
它總是在catch結束,除「java.net.SocketTimeoutException」 - 即使它已發送和收到正確的數據。這會減慢程序的速度。
我正在運行此代碼作爲一種方法,而不是一個線程,因爲我需要更改本節中的GUI。
有沒有人有任何想法,爲什麼它等待超時?
我試過'if(lol ==「」){KeepGoing = false; }'也一樣,沒有區別。 – user1285334 2012-03-22 11:14:14
**我想通過一種方法解決這個問題。我回來的XML回覆總是以結尾,所以我只是問lol(readline的變量)是否包含該回復。 ** – user1285334 2012-03-22 11:21:06
你知道你不能在字符串上做'=='操作符,對吧?有時候我也很想念。 – josephus 2012-03-22 11:28:51