日期:2014-05-20  浏览次数:20886 次

(初级)聊天室问题
客户机与服务器建立连接后,客户机怎么接受服务器广播来的信息(所有登录客户端都能接收),有什么办法可以使客户端一直处于接收状态吗?!这只是我的想法,我想听原理。如果你有好的办法,我也想听。
聊天工具 服务器

------解决方案--------------------
接收者线程呀!让它在那做死循环就行了!

------解决方案--------------------
伪长连接。每个客户端都发送接收数据请求,没有新数据就阻断线程(这里可以设置超时),有新数据立即返回。客户端收到返回以后无论是否有数据都再发送请求。

------解决方案--------------------
做个死循环

public void run() {
//循环临听是否有客户机向服务器发送消息
while(isConnected){
try {
//有信息则接收
String msg=sc.nextLine();
//循环list  取出这个list中所有的client ,再调用client的senInfo发送出去
for( Client c:list){
c.sendInfo(msg);
}
}catch(Exception e){
isConnected=false;
list.remove(this);
System.out.println("与客户机"+s.getInetAddress()+"连接失败");
e.printStackTrace();
}
}
}