欢迎来到天天文库
浏览记录
ID:46682018
大小:68.00 KB
页数:8页
时间:2019-11-26
《javasocket使用TCP协议实现的聊天室》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、1.Socket服务器端importjava.io.DatalnputStream;importjava.io.DataOutputStream;importjava.io.IOException;importjava.nct.ScrvcrSockct;importjava.net.Socket;importjava.util.Enumeration;importjava.util.Hashtable;importjava.util.Iterator;importjava.util.Scanner;publicclassServe
2、rimplementsRunnable{privatestaticServerSocketserver;privatestaticSocketsocket=null;//信息存储器privateHashtableinfoMemory=newHashtable();privateDatalnputStreamdis;privateDataOutputStreamdos;publicvoidrun(){//监听信息的方法listenLink();)//监听信息privatev
3、oidlistenLink(){try{while(true){dis=newDataInputStream(socket.getInputStream());Stringstr=dis.readUTF();System.out.println(str);this.analyscMcs(str);}}catch(IOExceptione){//TODOAuto-generatedcatchblocke.printStackTrace();}}//数据分析器,给予相应处理privatevoidanalyseMes(Stringmes
4、){Stringf]n=mes.split(,':n);Stringnamcl=nuH;Stringmessage—1”;if(n.length>l){for(inti=0;i5、i「)){System.out.println(name1+H//H+socket+nquit!H);transforMes(H*“+namel+”退出聊天室“);Socketsk=infoMemory.get(name1);transforMesSingle(sk,name1+M-quitM);try{sk.close();}catch(IOExceptione){//TODOAuto-generatedcatchblocke.printStackTrace();}infoMemory.remove(namel);if(info6、Memory.size()>=1){©SuppressWarnings(Mrawtypesn)Iteratoriter=infoMemory.keySet().iterator();Stringkey=(String)itcr.ncxt();socket=infoMemory.get(key);}}//-getList:接受客户端获取列表的请求〃将所有用户连接为字符串的形式,如:”-getList,用户1,用户2…用户n”elseif(message.trim().equals(n-getList,^)){StringBuffer7、list=newStringBuffer();list.append(n-getList,n);Enumerationnames=infoMemory.keys();while(names.hasMorcElcmcnts()){list.append(names.nextElement()+,7,);}transforMesSingle(socket,list.toStringO);}//-to:接受客户端请求,将信息转发给相应客户//如果目标客户不存在,则向请求客户发送和应消息elseif(message.ind8、exOf("-to")!=-1&&message.startsWith("・to")){Stringmain=mcssagc.substring(n-to11cngth(),mcssagc.lcngthO);System.out.println(m
5、i「)){System.out.println(name1+H//H+socket+nquit!H);transforMes(H*“+namel+”退出聊天室“);Socketsk=infoMemory.get(name1);transforMesSingle(sk,name1+M-quitM);try{sk.close();}catch(IOExceptione){//TODOAuto-generatedcatchblocke.printStackTrace();}infoMemory.remove(namel);if(info
6、Memory.size()>=1){©SuppressWarnings(Mrawtypesn)Iteratoriter=infoMemory.keySet().iterator();Stringkey=(String)itcr.ncxt();socket=infoMemory.get(key);}}//-getList:接受客户端获取列表的请求〃将所有用户连接为字符串的形式,如:”-getList,用户1,用户2…用户n”elseif(message.trim().equals(n-getList,^)){StringBuffer
7、list=newStringBuffer();list.append(n-getList,n);Enumerationnames=infoMemory.keys();while(names.hasMorcElcmcnts()){list.append(names.nextElement()+,7,);}transforMesSingle(socket,list.toStringO);}//-to:接受客户端请求,将信息转发给相应客户//如果目标客户不存在,则向请求客户发送和应消息elseif(message.ind
8、exOf("-to")!=-1&&message.startsWith("・to")){Stringmain=mcssagc.substring(n-to11cngth(),mcssagc.lcngthO);System.out.println(m
此文档下载收益归作者所有