gpt4 book ai didi

java - Android套接字总是以超时结束

转载 作者:行者123 更新时间:2023-11-29 09:15:22 25 4
gpt4 key购买 nike

我已经为 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;
}
}

它总是以捕捉结束,除了“java.net.SocketTimeoutException”——即使它已经发送和接收了正确的数据。这会大大降低程序速度。

我将此代码作为方法而不是线程运行,因为我需要更改这部分中的 GUI。

有谁知道它为什么要等待超时?

最佳答案

当没有更多数据时,lol 可能不是 null。尝试检查一个空白字符串。

关于java - Android套接字总是以超时结束,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9820951/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com