客户端关闭后,服务器段就出现了下面的异常
java.io.IOException: 您的主机中的软件中止了一个已建立的连接。
at sun.nio.ch.SocketDispatcher.write0(Native Method)
at sun.nio.ch.SocketDispatcher.write(SocketDispatcher.java:51)
at sun.nio.ch.IOUtil.writeFromNativeBuffer(IOUtil.java:93)
at sun.nio.ch.IOUtil.write(IOUtil.java:65)
at sun.nio.ch.SocketChannelImpl.write(SocketChannelImpl.java:487)
at com.hzx.servlet.P2PServlet$GatewayThread.sendMessage(P2PServlet.java:358)
at com.hzx.servlet.P2PServlet$1.run(P2PServlet.java:127)
if (!en.getKey().contains("SelectionKey")) {
GatewayThread g = en.getValue();
g.sendMessage("6"); }
try { sc.write(ByteBuffer.wrap(msg.getBytes()));
key.interestOps(SelectionKey.OP_READ);
} catch (IOException e) { e.printStackTrace();
removeGateway.add(gid); }
java I/O流的异常问题
答案:3 悬赏:0 手机版
解决时间 2021-02-13 11:04
- 提问者网友:孤山下
- 2021-02-12 22:40
最佳答案
- 五星知识达人网友:执傲
- 2021-02-12 23:45
如果是使用TCP协议通信,由TCP协议是面向连接。所以当客户端关闭后,由于没有预先告诉服务要销毁连接,客户端关闭时(客户与服务异常断开)服务端就会出现异常(空流情况)。这些都是在意料之内的。
一般的处理方法
对networkStream 处理应该是放在try {}catch{}里当出现异常就销毁当前socket连接:
伪代码为
try{
networkStream.read();
}catch{
socket.close();
}
一般的处理方法
对networkStream 处理应该是放在try {}catch{}里当出现异常就销毁当前socket连接:
伪代码为
try{
networkStream.read();
}catch{
socket.close();
}
全部回答
- 1楼网友:怀裏藏嬌
- 2021-02-13 01:54
如果是客户端主动关闭,忽略即可。
- 2楼网友:何以畏孤独
- 2021-02-13 01:19
服务器那边没有自动停止连接客户端
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯