只要与用户通信的那个socket.receive(byte[] buffer) 没有抛异常,那么用户就处于登录状态; 只要对方断开了连接即退出了程序,就会抛出SocketEception的。但是如果客户端仅仅将与服务器通信的socket对象dispose()掉了,我发现服务端会不停的接收到长度为0的字节流,不停的输出空白行,所以可以在receive之后加一个if进行判断,如果buffer长度为0, 就throw new Exception(),然后被catch到了, 说明用户下线了,当然在客户端发消息的时候应该限制用户不要发空消息。 |