采纳答案成功!
向帮助你的同学说点啥吧!感谢那些助人为乐的人
比如bio的UserInputHandler在收到了用户输入的quit之后是服务器单方面执行的close
同学你好~这里当服务器收到了客户端发来的quit命令时,就会关闭相应的writer。而关闭writer就会导致writer所包裹的stream和相应的socket也一起被关闭。
这个时候,对面的客户端还在持续的通过客户端的reader调用readLine()方法,而由于服务器端的socket此时已经关闭了,reader已经无法从所包裹的stream里读到任何数据了,所以readLine()会返回null值。由于我们在客户端一旦读到null值,就会跳出while循环而结束主线程(当然UserInputHandler线程也在发送完quit命令之后结束了),客户端进程也就结束了。
在这里,我们主动的去检测和处理另一端的服务器/客户端是否处于关闭的状态,以便我们可以用比较合理的方法处理客户端的退出。
非常感谢!
登录后可查看更多问答,登录/注册
对比式学习助你真正理解BIO/NIO/AIO三大网络编程模型。
1.5k 1
959 5
971 5
889 5
951 5
购课补贴联系客服咨询优惠详情
慕课网APP您的移动学习伙伴
扫描二维码关注慕课网微信公众号