我下载了个别人做的聊天程序。发现其他用户登录或退出的时候,其他用户都看不到提示。我想把这个提示加进去。加了半天都没成功。谁能给出相关的代码。随便在那边回答都有分送。两边都答复都送分。
链接如下:
http://community.csdn.net/Expert/topic/4350/4350740.xml?temp=.6657526
链接如下:
http://community.csdn.net/Expert/topic/4350/4350740.xml?temp=.6657526
在服务器端加入两条消息login和logout,当有新用户加入服务器时,发送"LOGIN:"+name给各用户,当有用户退出服务器时,发送“LOGOUT:”+name给各用户,具体实现如下:
1. 修改服务器端notifyChatRoom函数
public void notifyChatRoom(String name,boolean login)
{
StringBuffer sb = new StringBuffer("PEOPLE");
for(int i=0;i<array.size();i++)
{
Client c =(Client)array.get(i);
sb.append(":"+c.name);
}
sendToClients(sb);
if(name==null)
return;
sb = new StringBuffer();
if(login)
sb.append("LOGIN:"+name);
else
sb.append("LOGOUT:"+name);
sendToClients(sb);
}2. 修改服务器端notifyChatRoom()函数的三个调用:
(在内部类client中的run函数中)
三处依次改为: notifyChatRoom(name,true); //新用户加入
notifyChatRoom(name,false); //有用户退出
notifyChatRoom(null,false); //只刷新用户,没有加入或退出3. 修改客户端内部类ClientListener类中run()函数的代码:
在IF...ELSE处加入如下内容:
else if(keyword.equals("LOGIN"))//弹出对话框说明新用户加入
{
while(st.hasMoreTokens())
{
String user = st.nextToken();
if(!user.equals(name))
JOptionPane.showMessageDialog(frame,
"用户"+user+"加 入","提示",
JOptionPane.INFORMATION_MESSAGE);
}
}
else if(keyword.equals("LOGOUT"))
{
while(st.hasMoreTokens())
{
String user = st.nextToken();
JOptionPane.showMessageDialog(frame,
"用户"+user+"退出","提示",
JOptionPane.INFORMATION_MESSAGE);
}
}4. 附注:为了调试方便,我把各个用户的“消息窗口”定位在各自的Frame中间
实现方法: 在ClientServer中加入变量JFrame frame;
在其构造函数最后一行加入一句 frame=this;本程序已经调试正确, 请楼主仔细验证。