我为android 2.3.3制作了一个android套接字客户端应用程序。 它发送XML请求,然后从cobol套接字服务器收到回复。
应用程序运行得很好,我的问题是,一旦我的客户端应用程序读取了所有数据,它仍然会挂起,等待超时限制由于某种原因。
下面是代码:
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。
有没有人有任何想法为什么等待超时?
答案 0 :(得分:0)
当没有更多数据时,lol
可能不是null
。尝试检查空白字符串。