检测客户端何时不再监听服务器

时间:2014-06-30 00:32:17

标签: java android sockets serversocket

我正在编写一个应用程序来流式传输客户端可以收听和接收的数据。但是,当客户端不再监听时,我遇到了关闭套接字的问题。

我所做的是创建一个ServerSocket,然后等待连接,一旦连接,我开始流式传输数据。但是,一旦客户端不再连接,我就会陷入流媒体循环,无法判断是否有人正在收听。有办法解决这个问题吗?

try {
    serverSocket = new ServerSocket(STREAM_PORT);
    Socket clientSocket = serverSocket.accept();
    PrintWriter pw = new PrintWriter(clientSocket.getOutputStream(), true);

    while (true) {
        pw.println("some data");
    }
} catch (SocketException e) {
    // Never occurs when client disconnects
} catch (IOException e) {
    // Never occurs when client disconnects
}

我尝试过使用socket.isClosed(),但它总是返回false。我是从错误的角度接近这个,还是有办法做到这一点。理想情况下,我不希望客户端必须向服务器发送“结束”命令。

编辑:编辑以反映@Rod_Algonquin建议后我正在运行的当前代码

1 个答案:

答案 0 :(得分:1)

当您使用吞下I / O异常的PrintWriter,时,您需要在每次写入后调用checkError()以查看是否发生了错误。

相关问题