服务器端代码

 1 import java.io.IOException;
 2 import java.net.ServerSocket;
 3 import java.net.Socket;
 4 import java.util.ArrayList;
 5
 6 public class Server {
 7
 8     private static ArrayList<Socket> list = new ArrayList<Socket>();
 9     public static void main(String[] args) throws IOException {
10         ServerSocket server = new ServerSocket(9999);
11         while(true){
12             Socket socket = server.accept();
13             list.add(socket);
14             new ServerThread(socket,list).start();;
15         }
16
17     }
18
19
20
21 }

客户端代码

 1 import java.io.IOException;
 2 import java.net.Socket;
 3 import java.net.UnknownHostException;
 4
 5 public class Client {
 6
 7     public static void main(String[] args) throws UnknownHostException, IOException {
 8         Socket socket = new Socket("127.0.0.1",9999);
 9         new ThreadWriter(socket).start();
10         new ThreadReader(socket).start();
11     }
12
13 }

服务器处理socket的多线程

 1 import java.io.IOException;
 2 import java.io.InputStream;
 3 import java.io.OutputStream;
 4 import java.net.Socket;
 5 import java.util.ArrayList;
 6
 7 public class ServerThread extends Thread {
 8
 9     Socket socket;
10     ArrayList<Socket> list;
11     InputStream is;
12     OutputStream os;
13     public ServerThread(Socket socket, ArrayList<Socket> list) {
14         this.socket = socket;
15         this.list = list;
16     }
17
18     @Override
19     public void run() {
20         try {
21             while(true){
22                 is = socket.getInputStream();
23                 byte[] b = new byte[1024];
24                 int len = is.read(b);
25                 String str = new String(b,0,len);
26                 System.out.println(str);
27                 for(Socket socket:list){
28                     os = socket.getOutputStream();
29                     os.write(str.getBytes());
30                 }
31             }
32
33         } catch (IOException e) {
34             e.printStackTrace();
35         }
36     }
37
38 }

读取客户端输入流多线程代码

 1 import java.io.IOException;
 2 import java.io.InputStream;
 3 import java.net.Socket;
 4
 5 public class ThreadReader extends Thread {
 6
 7     Socket socket;
 8     public ThreadReader(Socket socket) {
 9         this.socket = socket;
10     }
11
12     @Override
13     public void run() {
14         try {
15             while(true){
16
17                 InputStream is = socket.getInputStream();
18                 byte[] b = new byte[1024];
19                 int len = is.read(b);
20                 String str = new String(b,0,len);
21                 System.out.println(str);
22             }
23         } catch (IOException e) {
24             // TODO Auto-generated catch block
25             e.printStackTrace();
26         }
27     }
28
29 }

客户端发送数据多线程代码

 1 import java.io.IOException;
 2 import java.io.OutputStream;
 3 import java.net.Socket;
 4 import java.util.Scanner;
 5
 6 public class ThreadWriter extends Thread {
 7
 8     Socket socket;
 9     public ThreadWriter(Socket socket) {
10         this.socket = socket;
11     }
12
13     @Override
14     public void run() {
15         try {
16             Scanner sc = new Scanner(System.in);
17             while(true){
18                 String str = sc.next();
19                 OutputStream os = socket.getOutputStream();
20                 os.write(str.getBytes());
21             }
22         } catch (IOException e) {
23             // TODO Auto-generated catch block
24             e.printStackTrace();
25         }
26     }
27
28 }

转载于:https://www.cnblogs.com/jpwz/p/5715852.html

Java多线程Socket在控制台输出的多人聊天室编程相关推荐

  1. java控制台输出版多人聊天室

    多人聊天室就要用到网络以及多线程以及输入输出流的知识 多人聊天室就是多个人同时聊天,一个发一条信息所有人都是可以接收得到. 接下来我们捋清楚一下思路 在这里面服务器充当了一个转发的作用,服务器要做的事 ...

  2. Android Socket通信(五) -- 实现一个多人聊天室

    系列文章: Android Socket 系列更新计划 Android Socket通信(一) – 初识与相遇 Android Socket通信(二) --UDP,单播,广播和多播(组播) Andro ...

  3. 【Java Socket】TCP协议的多人聊天室

    最近老师叫我们做一个基于Socket的多人聊天室,网上很多教程都只讲了如何通过Socket来建立连接以及通过控制台一遍打印证明连接已经完成但还没有具体实现多人聊天.这次我整理了一下自己的实现代码,希望 ...

  4. Java NIO Selector详解(含多人聊天室实例)

    一.Java NIO 的核心组件 Java NIO的核心组件包括:Channel(通道),Buffer(缓冲区),Selector(选择器),其中Channel和Buffer比较好理解 简单来说 NI ...

  5. 多人聊天室(Java)

    第1部分 TCP和UDP TCP:是一种可靠地传输协议,是把消息按一个个小包传递并确认消息接收成功和正确才发送下一个包,速度相对于UDP慢,但是信息准确安全:常用于一般不要求速度和需要准确发送消息的场 ...

  6. Java多线程socket网络协议传输

    Java和大数据系列 注:大家觉得博客好的话,别忘了点赞收藏呀,本人每周都会更新关于人工智能和大数据相关的内容,内容多为原创,Python Java Scala SQL 代码,CV NLP 推荐系统等 ...

  7. Java Socket实现简易多人聊天室传输聊天内容或文件

    Java Socket实现简易多人聊天室传输聊天内容或文件 Java小练手项目:用Java Socket实现多人聊天室,聊天室功能包括传输聊天内容或者文件.相比于其它的聊天室,增加了传输文件的功能供参 ...

  8. 使用java socket实现一个简单的一对多聊天室

    socket就是指两个应用程序之间通信的抽象对象,我们可以使用socket实现网络应用程序.例如一个多人聊天室. 目录 先从服务端开始 创建一个窗口类 创建一些方法,用于管理服务端链接,或者进行消息的 ...

  9. java socket多人聊天室_如何运用Java socket实现多人聊天室功能

    如何运用Java socket实现多人聊天室功能 导语:如何运用Java socket实现多人聊天室功能呢?下面是小编给大家提供的代码实现,大家可以参考阅读,更多详情请关注应届毕业生考试网. 目录结构 ...

最新文章

  1. prefetch下载SRA 数据
  2. 【深度学习】神经网络中几个常用的求导公式
  3. (转)JAVA AJAX教程第三章—AJAX详细讲解
  4. 如何为我们的应用程序提供一个更小、更快的视频通话库
  5. weka和matlab完成完整分类实验
  6. 【软件开发底层知识修炼】二 深入浅出处理器之二 中断的概念与意义
  7. 【英语学习】【加州教材】【G4】【科学】Science目录及术语表
  8. 手把手教你移植RT-Thread系统
  9. powerdesigner中将表的name在生成建表sql时生成注释
  10. pdf复制到word有空格间隙和换行问题解决办法
  11. 面试简历上的项目经验
  12. 强大的vim配置文件,让编程更随意【http://www.cnblogs.com/ma6174/】
  13. 欢乐鼠标自动点击器_抓住夏天的尾巴|与自动点击评论器邂逅一次
  14. C语言中转义字符的介绍与使用
  15. 数据结构之广义表(C语言)
  16. html页面实现打印预览功能,js实现打印、页面设置、打印预览功能
  17. 【Java】函数式接口
  18. 2021计算机专业考研科目,2021年考研计算机考试科目
  19. 网络通信的标准化组织和常见标准
  20. Python自学记录——高阶函数map/reduce、filter、sorted

热门文章

  1. opencv 3.1编译 linux,Ubuntu 编译安装 OpenCV 3.1
  2. 网络推广外包——网络推广外包浅析那些年起步就结束的企业网站
  3. php把数组转换成对象,php怎么将数组转换成对象
  4. 开发日记-20190830 关键词 读书笔记《Unix环境高级编程(第二版)》DAY 6
  5. 开发日记-20190531 关键词 读书笔记《鸟哥的Linux私房菜-基础学习篇》
  6. 开发日记-20190524 关键词 读书笔记《鸟哥的Linux私房菜-基础学习篇》
  7. blfs(systemv版本)学习笔记-使用apache创建简单的网页服务器
  8. Codeforces 337D
  9. Sublime Text 3 插件的安装、升级和卸载
  10. 2017秋-软件工程第十二次作业(三)-版本控制报告(个人)