请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

请问socket是关闭服务端还是服务端和客户端都要close?

比如bio的UserInputHandler在收到了用户输入的quit之后是服务器单方面执行的close

正在回答

插入代码

1回答

同学你好~这里当服务器收到了客户端发来的quit命令时,就会关闭相应的writer。而关闭writer就会导致writer所包裹的stream和相应的socket也一起被关闭。

这个时候,对面的客户端还在持续的通过客户端的reader调用readLine()方法,而由于服务器端的socket此时已经关闭了,reader已经无法从所包裹的stream里读到任何数据了,所以readLine()会返回null值。由于我们在客户端一旦读到null值,就会跳出while循环而结束主线程(当然UserInputHandler线程也在发送完quit命令之后结束了),客户端进程也就结束了。

在这里,我们主动的去检测和处理另一端的服务器/客户端是否处于关闭的状态,以便我们可以用比较合理的方法处理客户端的退出。

1 回复 有任何疑惑可以回复我~
  • 提问者 EverL #1
    非常感谢!
    回复 有任何疑惑可以回复我~ 2019-09-17 09:35:17
问题已解决,确定采纳
还有疑问,暂不采纳
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号