初学Java的Socket与ServerSocket的疑问

hotdog000 2006-12-27 12:03:00
我在写一个聊天程序,当客户端退出程序时,服务器要如何知道客户端已退出??

我写了两个类来测试如何检测到客户端的Socket已close...如下:

//服务器测试类
public class TestServerSocket {

public static void main(String args[]){
ServerSocket server = null;
Socket client = null;
InputStream in = null;
OutputStream out = null;


try {
server = new ServerSocket(1000);
client = server.accept();
System.out.println("已建立连接");
in = client.getInputStream();
out = client.getOutputStream();

while(true){
if(client.isClosed()){
System.out.println("client is close!!");
break;
}
if(!client.isConnected()){
System.out.println("client is not connected!!");
break;
}
if(!client.isBound()){
System.out.println("client is not bound!!");
break;
}
}
} catch (IOException e) {
e.printStackTrace();
}

}
}


//客户端测试类
class TestSocket{

public static void main(String args[]){
Socket client = null;

try {
client = new Socket("localhost",1000);
client.close();

} catch (UnknownHostException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
client.close();
} catch (IOException e) {
e.printStackTrace();
}
}

}

}

我发现在这里对服务器的client用isClose,isConnected,isBound检测不出来??
不知道要如何写才可以??
...全文
242 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
zzmei 2006-12-27
  • 打赏
  • 举报
回复
定时发包询问每个用户
或者
用户退出时发包通知服务器。
gzcheng78 2006-12-27
  • 打赏
  • 举报
回复
通过检测io读写异常
聪头 2006-12-27
  • 打赏
  • 举报
回复
定时发出检测包
daocaoren0 2006-12-27
  • 打赏
  • 举报
回复
还是推出是发出通知告知服务器比较好一点

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧