老师好!

来源:5-12 多人聊天室演示(下)

摇了摇头摇了摇头

2019-11-04

老师好!为什么我强制退出客户端终端以后,服务器的终端会出现这样的情况:

http://img1.sycdn.imooc.com/szimg/5dc01d0208f1b9a506500436.jpg

我在ChatServer的start方法while循环里打印了msg,发现msg是null的时候还是会进入while循环。。

http://img1.sycdn.imooc.com/szimg/5dc01d6608a85dd604290257.jpg

最后好像没有异常直接退出了,这是什么情况0.0

写回答

1回答

Stannum

2019-11-05

同学你好~我想你在这里运行的是BIO聊天室,我没有重现你这个问题,可不可以再解释一下你是怎样强制退出客户端的?

如果你有改动过代码,那么我建议你看一下是否改动了ChatHandler中的这一行代码:

while ((msg = reader.readLine()) != null)

当客户端强制退出后,readhLine()方法无法在读取任何信息,所以会返回null值。如果while循环不检查null值,就有可能造成无限循环,类似你所描述的情况。

如果有更多细节需要咨询,也欢迎你在qq上私信我。

0
1
摇了摇头摇了摇头
谢谢老师!我解决啦,我换成了iterm之后就没有出现这样的情况了。。。
2019-11-05
共1条回复

系统学习Java网络编程 深度理解BIO/NIO/AIO

对比式学习助你真正理解BIO/NIO/AIO三大网络编程模型。

880 学习 · 148 问题

查看课程