初学java请教:有关聊天程序

zjhzylp 2005-10-26 07:25:08
我下载了个别人做的聊天程序。发现其他用户登录或退出的时候,其他用户都看不到提示。我想把这个提示加进去。加了半天都没成功。谁能给出相关的代码。

随便在那边回答都有分送。两边都答复都送分。
链接如下:
http://community.csdn.net/Expert/topic/4350/4350740.xml?temp=.6657526
...全文
74 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
zjhzylp 2005-10-28
  • 打赏
  • 举报
回复
ok,我先给分,然后再好好看看。
不过附注好像出了点问题。
pieapple 2005-10-27
  • 打赏
  • 举报
回复
我给你改了一下,论方法还是比较简单的,全部用原来程序里面的东西,没有新的设计观点。

主要思路是:
在服务器端加入两条消息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;

本程序已经调试正确, 请楼主仔细验证。




62,625

社区成员

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

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