我正在编写一个应用程序来流式传输客户端可以收听和接收的数据。但是,当客户端不再监听时,我遇到了关闭套接字的问题。
我所做的是创建一个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建议后我正在运行的当前代码
答案 0 :(得分:1)
当您使用吞下I / O异常的PrintWriter,
时,您需要在每次写入后调用checkError()
以查看是否发生了错误。