基于java多线程的聊天室程序

基于java多线程的聊天室程序

ID:11731041

大小:31.50 KB

页数:11页

时间:2018-07-13

基于java多线程的聊天室程序_第1页
基于java多线程的聊天室程序_第2页
基于java多线程的聊天室程序_第3页
基于java多线程的聊天室程序_第4页
基于java多线程的聊天室程序_第5页
资源描述:

《基于java多线程的聊天室程序》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、基于Java多线程的聊天室程序…_!!E{!1…'±£实用第一智慧密集.x!!!h!!}基于Java多线程的聊天室程序誓刘玉胡晖仇宾;摘要:聊天室是网络上常见的一项服务,大多都采用B/S结构,本文用Java语言实现了一个c/S结构的聊天室.该程序综合利用了多种Java知识与技术.关键词:Java;多线程;聊天室;Socket1引言网上各个网站提供的聊天室基本都是B/S结构的,现在用Java实现一个C/S结构的聊天室程序.C/S结构包括两个方面:一个运行在服务器:一个运行在客户端.2工作原理服务器程序运行后就等待客户端程序连入,客户端根据服务器的IP地址

2、和端口号连人.这样服务器和客户端就建立了一个连接,而且可以有多个客户端同时连人一个服务器.连接建立好之后.每个客户端的发言都发送给服务器,服务器接收后再转发给所有连入的客户端,这样每个客户端就都能收到其他客户发出的信息了.这就是C/S结构聊天室的工作原理,其实现主要使用如下两种技术:(1)Socket:网络套接字,让两个应用程序通过一个双向的网络通信链接实现数据交换.即服务器和客户端的应用程序各有一个Socket,这两个Socket把服务器和客户端的程序连接起来并交换数据.(2)多线程:因为一个服务器要连人多个客户端,要让服务器程序同时为多个客户服务,

3、就需要为每个客户端开辟一个线程,专门负责处理该客户的信息.此外,客户端程序不仅要发送信息给服务器,还要不断接收服务器转发过来的信息,困此也需要开辟一个线程专门负责接收服务器的信息.3程序实现3.1服务器端建一个类,名称为ChartServer,代表服务器程序.在该类中,首先定义一个ServerSocket,并指明端口号,这样服务器端的Socket就建立好了.然后去接收客户端的请求,并且把客户端传来的Socket放人一个HashSet中保存(HashSet集合中保存所有客户的Socket,以便服务器),最后启动一个线程负责该客户.在线程中不断接收该客户发

4、送的信息并转发给HashSet中所有的客户.代码如下:20201O.21电奠毽技巧与采∥服务器端程序publicclassChartServer{IprivateHashSet<Socket>clients=newHashSet<Socket>();//存放客户端SocketlpublicChartServerO(try{ServerSocketSS=newServerSocket(6666);"耄立Socketwhile(true){SocketS=ss.accept();//等待并接收客户端请求clients.add(s);

5、//把收到的客户端Socket保存newServerThread(s,clients),start();∥启动一个线程接收该客户信息))catch(10Exceptionle){e.printStackTraceO;))∥线程,负责接收客户信息并转发给其他客户classServerThreadextendsThread{privateSockets:privateHashSetclients;publicServerThread(SocketsHashSetclients){thiS.S=s:this.clients=clients;)publicvo

6、idrun(){try{BufferedReaderbr=newBuffere-dReader(newInputStreamReader(sgetlnputStreamO));while(true){sendMessage(br.readLineO+'kn");))catch(1OExceptione){e.printStackTraceO;)}//给每个客户发送一份信息privatevoidsendMessage(Stringstr}{……PROGRAMLANGUAGE…….…一………?…m?~…一………………………………一………………Iterato

7、rit:clients.iterator0;while(it.hasNext0){Sockettemp=fSocket)it,next();try{PrintWriterpw=newPrintWriter(temp.getOutputStreamO)pw.println(str);pw.flush();)catch{IOExceptone){e.DrintStackTrace《):))))publicstaticvoidmain(String[】args){newChartServer0;})3.2客户端建一个ChartClient类作为客户端程序.运

8、行后如图l所示.首先构建好界面,然后定义Socket,指明服务器的IP地址图1聊天室客户端和端

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。