永发信息网

java I/O流的异常问题

答案:3  悬赏:0  手机版
解决时间 2021-02-13 11:04
客户端关闭后,服务器段就出现了下面的异常
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); }
最佳答案
如果是使用TCP协议通信,由TCP协议是面向连接。所以当客户端关闭后,由于没有预先告诉服务要销毁连接,客户端关闭时(客户与服务异常断开)服务端就会出现异常(空流情况)。这些都是在意料之内的。

一般的处理方法
对networkStream 处理应该是放在try {}catch{}里当出现异常就销毁当前socket连接:
伪代码为
try{

networkStream.read();
}catch{
socket.close();
}
全部回答
如果是客户端主动关闭,忽略即可。
服务器那边没有自动停止连接客户端
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
东山居委会地址在什么地方,想过去办事
潼关县城关第一初级中学在什么地方啊,我要过
寨外林居委会地址在什么地方,想过去办事
08年金融危机对我国产生哪些方面的影响?
电信宽带停用没报停还要交宽带费吗?
dell台式机怎么设置U盘启动
我想买一辆既省油空间又大外观漂亮的车价格十
专升本,专套本,自考,成人高考哪个含金量高
董塘居委会地址在什么地方,我要处理点事
茂名华通高州分店地址有知道的么?有点事想过
虹霓工业区在什么地方啊,我要过去处理事情
阅读材料,回答问题。2013年4月下旬以来,全
she唱的歌词是不正常才正常
油箱盖里面拧紧了而拧的外盖是松的,汽油会不
桃溪居委会地址在哪,我要去那里办事
推荐资讯
想知道: 中国 平三天门是哪里 在哪
将数量不等的大豆植株幼苗随机移栽到5块面积
历史各位置TOP10系列小前锋篇,谁是历史第一
爱心儿童摄影地址有知道的么?有点事想过去
置地华庭北区北门在哪里啊,我有事要去这个地
oppo手机恢复出厂设置别人插卡使用能查到他吗
中国农业银行24小时自助银行(中枢分理处)地址
【花非花白居易】白居易写花非花的谜底是什么
情缘发屋地址在什么地方,我要处理点事
w3670性能怎么样啊?玩cf fps多少?来人啊
2016年1月22日北京下雪了吗
乐康幼儿园(邯郸涉县)地址在什么地方,我要处
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?