为了账号安全,请及时绑定邮箱和手机立即绑定

运行效果实现了,但是运行为什么会报错呢?java.net.SocketException: Socket is closed

https://img1.sycdn.imooc.com//5b0a357e0001031409520628.jpgjava.net.SocketException: Socket is closed

正在回答

3 回答

你把socket.shutdownInput写到While结构的后面,就不会出现了。同样的Client也是,我猜测:socket的这个方法,是优先级高的,应该先关掉,如果后置,就会重新检验Outputstream等等,结果,就悲剧了。

0 回复 有任何疑惑可以回复我~
#1

艾米丽宏 提问者

我是写到while后面的哒!
2018-05-28 回复 有任何疑惑可以回复我~
#2

qq_星河k_0 回复 艾米丽宏 提问者

我的意思是紧跟在while后面,在br.close()之前.
2018-05-29 回复 有任何疑惑可以回复我~
#3

艾米丽宏 提问者

非常感谢!
2018-05-29 回复 有任何疑惑可以回复我~

你写了两次shutdownoutputstream

0 回复 有任何疑惑可以回复我~

因为你没有判断是socket是不是已经关闭了,你的socke它已经is closed,它就为空,你就不用再关了,但它不影响上面的代码

0 回复 有任何疑惑可以回复我~
#1

艾米丽宏 提问者

为什么老师演示的那个案例就不会提示呢?也没有判断是否关闭?我的服务端是运行的,接收客服端消息之后才会关闭socket,不应该提醒吧?
2018-05-28 回复 有任何疑惑可以回复我~
#2

no4990 回复 艾米丽宏 提问者

老师没有在最后关闭资源的时候关闭inputStream,而你关闭了,而且你关闭之前没有检查是否已经关闭。
2019-07-08 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

运行效果实现了,但是运行为什么会报错呢?java.net.SocketException: Socket is closed

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信