https://github.com/wsdjeg/Chatting/issues/3
主要问题就是, socket 链接的一端被ctrl + c
强制关闭后, socket 没有 close ,另外一端一只无线循环。
1
sagaxu 2016-11-21 09:57:13 +08:00 via Android 1
http://docs.oracle.com/javase/tutorial/networking/sockets/readingWriting.html
读到 null 时要结束不要 continue |
2
binbinyouliiii 2016-11-21 10:19:00 +08:00 1
英语水平不好,没仔细看,不知道你是字节流还是字符流,字符流的话,当读到 null 的时候,就直接跳出循环,字节流就是读到-1 的时候跳出, socket 有个 isCloseed 方法,是判断 socket 有没有关闭,不是判断 socket 都没有断开的
|
4
wsdjeg OP @binbinyouliiii 那么是否有方法判断 socket 是否已断开的呢?
|
5
sagaxu 2016-11-21 20:21:36 +08:00 via Android
@wsdjeg JDK 文档写的很清楚,返回 null 就是对方关闭了 socket 的写入,或者干脆完全关闭了。只要返回 null 或者抛了 IOException ,你唯一能做的就是关闭连接并清理现场。
|