java多线程,多用户聊天室,原理模型ChatDemo.docx

上传人:小飞机 文档编号:3159614 上传时间:2023-03-11 格式:DOCX 页数:9 大小:37.33KB
返回 下载 相关 举报
java多线程,多用户聊天室,原理模型ChatDemo.docx_第1页
第1页 / 共9页
java多线程,多用户聊天室,原理模型ChatDemo.docx_第2页
第2页 / 共9页
java多线程,多用户聊天室,原理模型ChatDemo.docx_第3页
第3页 / 共9页
java多线程,多用户聊天室,原理模型ChatDemo.docx_第4页
第4页 / 共9页
java多线程,多用户聊天室,原理模型ChatDemo.docx_第5页
第5页 / 共9页
亲,该文档总共9页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《java多线程,多用户聊天室,原理模型ChatDemo.docx》由会员分享,可在线阅读,更多相关《java多线程,多用户聊天室,原理模型ChatDemo.docx(9页珍藏版)》请在三一办公上搜索。

1、java多线程,多用户聊天室,原理模型ChatDemo/*服务器端类ChatServer */import java.io.IOException;import .ServerSocket;import .Socket;import java.util.ArrayList;import java.util.LinkedList;import java.util.List;public class ChatServer /公共聊天室public static void main(String args) throws IOException ServerSocket ss=new ServerS

2、ocket(6666);List<Socket> socketList=new LinkedList<Socketwhile(true)Socket socket=ss.accept;socketList.add(socket);Thread t=new Thread(new ChatThread(socket,socketList);t.start;/*服务器端类ChatThread */import java.io.*;import .*;import java.util.List;public class ChatThread implements Runnablepriva

3、te List<Socket> socketList;private Socket socket;private BufferedReader bufferedReader;public ChatThread(Socket socket,List<Socket> socketList)this.socket=socket;this.socketList=socketList;private void preRunInputStreamReader r=null;try r = new InputStreamReader(this.socket.getInputStream);t

4、his.bufferedReader=new BufferedReader(r); catch (IOException e) e.printStackTrace;private PrintWriter getSocketPrintWriter(Socket socket)OutputStream os=null;try os = socket.getOutputStream; catch (IOException e) e.printStackTrace;OutputStreamWriter osw=new OutputStreamWriter(os);BufferedWriter bw=n

5、ew BufferedWriter(osw);return new PrintWriter(bw, true);private void broadcast(String msg)for(Socket s:socketList)PrintWriter pw=this.getSocketPrintWriter(s);pw.println(msg);public void run String msg=;this.preRun;while(true)try msg=from client +this.bufferedReader.readLine;this.broadcast(msg); catc

6、h (IOException e) try this.bufferedReader.close;this.socket.close;this.socketList.remove(this.socket);this.broadcast(somebody exist.people size :+socketList.size); catch (IOException e1) e1.printStackTrace;e.printStackTrace;return ;/*客户端类ChatClient,CTGetMessage,CTSendMessage*/import java.io.*;import

7、 .*;import java.util.Scanner;public class ChatClient public static void main(String args) throws Exception Socket socket=new Socket(127.0.0.1, 6666);Scanner sc=new Scanner(System.in);System.out.print(输入名字:);String name=sc.nextLine;System.out.println(客户端已经链接.);CTGetMessage g = new CTGetMessage(socket

8、);CTSendMessage s = new CTSendMessage(socket,name);Thread gt = new Thread(g);Thread st = new Thread(s);gt.start;st.start;class CTGetMessage implements Runnable private Socket socket;private BufferedReader bufferedReader;public CTGetMessage(Socket socket) this.socket = socket;InputStreamReader r = nu

9、ll;try r = new InputStreamReader(this.socket.getInputStream); catch (IOException e) e.printStackTrace;this.bufferedReader = new BufferedReader(r);public void run String msg = null;while (true) try msg = this.bufferedReader.readLine;System.out.println(msg); catch (IOException e) e.printStackTrace;cla

10、ss CTSendMessage implements Runnable private Socket socket;private PrintWriter printWriter;private BufferedReader bufferedReader;private String name;public CTSendMessage(Socket socket,String name) this.name=name;this.socket = socket;try InputStreamReader isr = new InputStreamReader(System.in);buffer

11、edReader = new BufferedReader(isr);OutputStream os = socket.getOutputStream;OutputStreamWriter osw = new OutputStreamWriter(os);BufferedWriter bw = new BufferedWriter(osw);this.printWriter = new PrintWriter(bw, true); catch (IOException e) e.printStackTrace;public void run String msg = null;while (true) try msg =name+:+ bufferedReader.readLine;printWriter.println(msg); catch (Exception e) e.printStackTrace;

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号