Client listdata1 = (Client)frame.clients.elementAt(i); 内容来自www.paper51.com frame.list1.add(listdata1.name+ "" + listdata1.ip +"已经连接", i);} copyright paper51.com notifyRoom(); copyright paper51.com this.stop();}}} copyright paper51.com 服务器接收到客户信息分析后转发功能的方法是Client类中的sendClients()和send()两个方法的组合,其功能实现代码如下。 paper51.com public synchronized void send(StringBuffer message){ 内容来自论文无忧网 www.paper51.com ps.println(message); 内容来自论文无忧网 www.paper51.com
ps.flush(); 内容来自www.paper51.com } paper51.com public static synchronizedvoid sendClients(StringBuffer message){ 内容来自论文无忧网 www.paper51.com for (int i = 0; i< frame.clients.size() ; i++) { http://www.paper51.com
Client c = (Client)frame.clients.elementAt(i); http://www.paper51.com
c.send(message);} 内容来自www.paper51.com 服务器接收到用户登录链接的用户名称后,进行分析是否该用户名称已经存在的功能的方法是Clinet类中的checkName()方法,其功能实现代码如下。 内容来自www.paper51.com
public static boolean checkName(Client newClient){ 内容来自www.paper51.com
for (int i = 0; i< frame.clients.size() ; i++) { 内容来自www.paper51.com Client c = (Client)frame.clients.elementAt(i); 内容来自www.paper51.com if ((c != newClient) &&c.name.equals(newClient.name) ) { paper51.com
return false;}} 内容来自www.paper51.com
return true;} copyright paper51.com 服务器对所有客户端用户列表的更新功能,也就是服务器把记录下来所有用户列表中的用户名称转发给所有在线用户的功能,这个功能的实现是Clinet类中的notifyRoom()方法,其功能实现代码如下。 内容来自论文无忧网 www.paper51.com public static void notifyRoom() { paper51.com StringBufferpeople = new StringBuffer("PEOPLE:"); http://www.paper51.com
for (int i = 0; i< frame.clients.size(); i++) { http://www.paper51.com Client c = (Client)frame.clients.elementAt(i); 内容来自www.paper51.com people.append(c.name + ":");} 内容来自论文无忧网 www.paper51.com sendClients(people);} 内容来自www.paper51.com 服务器对客户端用户的请求退出功能的实现是发送退出用户的用户名称给所有在线用户,同时把该用户名称从用户列表中移除掉,这个功能的实现是Client类中的disconnect()方法,其功能实现代码如下。 内容来自www.paper51.com public synchronized void disconnect(Client c){ http://www.paper51.com try { paper51.com frame.jTextArea1.append("系统消息:"+c.name+" 断开连接\n"); paper51.com frame.active_connects--; http://www.paper51.com c.send(new StringBuffer("QUIT"+":"+c.name )); paper51.com frame.clients.removeElement(c); paper51.com frame.jTextField2.setText("目前已经有: " + frame.clients.size() + 内容来自www.paper51.com
"用户连接"); paper51.com c.socket.close(); copyright paper51.com } 内容来自论文无忧网 www.paper51.com catch (IOException ex) { copyright paper51.com …… copyright paper51.com } 内容来自www.paper51.com
} 内容来自论文无忧网 www.paper51.com |