Chat程序思路分析:
■ 服务器端的程序流程:启动服务器,等待客户端的进入,客户端连接以后启动独立的线程,处理客户端的线程(发送欢迎文字要求客户输入用户名,给所有用户通知告诉所有人有用户进来,如果客户机发送一条消息 则把它发给所有的用户,还可以发送给指定的客户)。
■ 编写三个类:ChatServer类,负责启动一个ServerSocket,使进入Socket的对象创建一个ProcessClient的对象,ProcessClient类实现了Runnable接口,它独立运行处理某一个客户端,创建成功后,把自己放入UserManager队列中,当要发送消息的时候,把消息发送给其他的客户端,并且在退出的时候,把自己从队列中删除。UserManager类是一个单实例形式的工具类,它提供给ProcessClient一些用户管理用户的方法,例如,加入用户,删除用户,广播消息等,由于会有多个用户线程处理其中的方法,所以其中的方法大多声明为synchronized.
■程序实现(错误和技巧)
1:首先创建工具类UserManager类:一个单实例类,里面的方法都声明为public static synchronized.接下来思考 需要对客户端传入的Socket转杯哪些管理的方法。取得一个线程对象,添加用户,删除用户,统计在线用户,给所有人发送消息,给指定的人发送消息,实例化一个用户线程的队列private static void java.util.Map<String,ProcessClient> clientMap=new java.util.HashMap;
●取得一个线程对象的方法:
Public static synchronized ProcessClient getUserThread(String name)
{
//返回一个客户端
Return clientMap.get(name);
}
●添加一个用户的方法:
Public static synchronized ProcessClient addUserThread(String name.ProcessClient client)
{
Return clientMap.put(name,Client);
}
●删除一个用户的方法:
Public static synchronized ProcessClient deleteThread(String key)
{
Return clientMap.remove(key);
}
●统计在线用户的方法:
Public static synchronized int getOnlineCount()
{
Return clientMap.size();
}
●发信息给所有人的方法:参数srcName代表发送的人,msgContent 代表发送的消息内容
Public static synchronized sendToAllUser(String srcName,String msgContent)
{
//向客户端队列的一个遍历发送
msgContent= srcName+”说”+ msgContent+”\r\n”;
//set是一个集合
java.util.Set<String > set= clientMap.keySet();
//遍历这个集合
java.util.Iterator key IT= set.iterator();
while(keyIT.hasNext())
{
String keysUser= keyIT.next();
ProcessClient pc= clientMap.get(keysUser);
//取出ProcessClient中的一个对象,然后向其他用户发送消息
Pc.sendToClient (srcName,msgContent);
}
}
分享到:
相关推荐
chat room ready code app
1、运行c#于ASP.NET 技术实现聊天室chatRoom功能
asp.net 2.0 聊天室
ChatRoom测试报告1
ChatRoom用户手册1
WebSocket 聊天室 chatRoom.zip
这是一个用C++编写的聊天程序,WINSOCK技术
Linux-chatroom的程序代码,代码实现了在其服务器端进行多客户端连接的基础上实现群聊,私聊的功能
Simple version of the Internet chat room.
JSP\ChatRoom
改进的JAVA聊天室源码: 1。支持IE7 2。支持中文 本源码是对原有ChatRoom的改进。
简单的聊天室的实现,所有的源程序,基于csocket的、
简单的java聊天室, 实现简单的多对多聊天功能
ChatRoom主要源码文件
在VC环境下实现的,使用CSocket类的聊天程序
基于Linux框架搭建的聊天室系统,最多可支持百人聊天