【问题标题】:Socket not detected as closed on Android? [duplicate]在 Android 上未检测到套接字已关闭? [复制]
【发布时间】:2015-12-09 13:20:35
【问题描述】:

我为客户端-服务器通信编写了一个简单的网络引擎。它在 Windows 上完美运行,服务器知道客户端何时断开连接等(readLine() 抛出异常)。我试图将引擎移植到 Android 并发送和接收数据工作,但由于某种原因,服务器没有检测到套接字何时关闭(readLine() 仍然被阻止并且不会抛出任何异常)。我什至尝试将 Android 设备与互联网断开连接,但它仍然没有检测到关闭的套接字。我想到了一个解决办法,实现超时,当客户端长时间不发送东西时,服务器会认为他断开了连接,但这可能不是一个好的永久解决方案。

代码被try-catch异常包围:

String userInput;
BufferedReader stdIn = new BufferedReader(new InputStreamReader(socket.getInputStream()));

while ((userInput = stdIn.readLine()) != null) {
    //do something
}

【问题讨论】:

标签: java android sockets


【解决方案1】:

我找到了解决办法! Android 上的 Socket 而不是抛出异常会导致 readLine() 为空,但服务器代码在 readLine() 为空时 while 停止的情况下什么也不做。所以我通过在 while 语句后添加一些代码来修复它。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-08-20
    • 2010-09-14
    • 2015-09-14
    • 2014-10-21
    • 2014-12-08
    • 1970-01-01
    • 2020-05-12
    相关资源
    最近更新 更多