浏览 1472 次
锁定老帖子 主题:小型CHATROOM分析2
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2008-02-29
● 发送给指定用户的方法:参数srcName代表发送者,msgContent发送的内容,destName接受消息的人 Public static synchronized sendToOnlyUser(String srcName,String msgContent,String destName) { //向客户端队列 的一个遍历发送 msgContent= srcName+”说”+”\r\n”; //创建一个集合,把实例化了的用户线程队列clientMap放进去 java.util.Set<String > Set=clientMap.keySet(); java.util.Iretarator keyIT= Set.iterator(); while(keyIT.hasNext()) { String keysUser= keyIT.next(); ProcessClient pc=clientMap.get(keysUser); //开始向一个指定的对象发送消息 If(keysUser.equalsIgnoreCase(destName)) { System.out.println(“进入私人聊天时间!”); msgContent= srcName+”对你说”+ msgContent+”\r\n”; pc.sendToClient(srcName,msgContent); } } } 2:创建独立线程,处理对应客户端Socket请求的类 Public class ProcessClient extends Thread { Public ProcessClient(java.net.Socket client) { This.client=client; } Public void run() { } //处理客户端的连接 Public void chatClient(java.net.Socket socket) { Try{ This.userAddress= socket.getRemoteSocketAddress.toString(); Java.io.InputStream ins= socket.getInputStream(); Java.io.OutPutStream ous=socket.getOutPutStream(); Int i=0; StringBuffer sb=new StringBuffer(); username=getUserName(ins ,ous); //输入用户名成功将自己加入到对象列表中 UserManager.addUserThread(username,this); String msg= username+”在登陆前有”+UserManager.getOnlineCount()+”人”; UserManager.sendToAllUser(“系统”+ msg); String msgToOnly; While(true) { I=ins.read(); //客户端回车 代表消息已经发送完毕 If(i==13) { String s=sb.toString(); } } } Catch(Exception e) { } } //得到用户名 Public String getUserName(java.io.InputStream ins,java.io.OutputStream ous) { String userName=””; Try{ Int i=0; StringBuffer sb=new StringBuffer(); String welcomeMsg=”你好,欢迎加入聊天室,请输入你的名字:\r\n!”; Ous.write(welcomeMsg.getBytes()); //读取用户名 If((i=int.read())!=-1) { If(int==13) { userName=sb.toString(); userName=(ISO2GBK)userName; } } } Catch() {} Return userName; } //对消息内容进行编码,以免出现乱码 Public String ISO2GBK(String src) { Try{ Src=new String (src.getBytes(“ISO-8859-1”),”GBK”); } Catch(Exception e) {} } Private String username; Private String userAddress; Private Socket client; } 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |