资源描述:
《基于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聊天室客户端和端