【发布时间】:2026-01-16 03:40:01
【问题描述】:
我为 android 2.3.3 制作了一个 android socket 客户端应用程序。 它发送一个 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。
有没有人知道它为什么要等待超时?
【问题讨论】:
标签: java android sockets timeout connection