服务端使用while(true) 循环, 循环内使用line = bufferedReader.readLine();System.out.println(line);if line == “bye” 那么break;但是 如果 对方客户端 异常关闭,比如 通过ctrl+c来关闭,那么 服务端这边将会死循环,一直打印null。
相应的问题:https://github.com/wsdjeg/Cha...
2 回答

杨__羊羊
TA贡献1943条经验 获得超7个赞
关闭是会抛出异常的,捕捉之后进行处理,退出循环
public void run() {
Boolean isExit = false;
while (!isExit) {
try {
InputStream is = socket.getInputStream();
InputStreamReader isr = new InputStreamReader(is);
BufferedReader br = new BufferedReader(isr);
String info = null;
while ((info = br.readLine()) != null) {
receiveMsg(info);
}
} catch (Exception e) {
// TODO Auto-generated catch block
HandleException.addEx(e);
isExit = true;
}
}
if (isExit)
SocketManager.connSockets.remove(clientName);
}
添加回答
举报
0/150
提交
取消