Android套接字总是以超时结束

时间:2012-03-22 11:00:09

标签: java android sockets timeout connection

我为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。

有没有人有任何想法为什么等待超时?

1 个答案:

答案 0 :(得分:0)

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