实现BIO多客户端通讯模式
创始人
2024-01-31 03:41:36

实现BIO多客户端通讯模式

    • 背景
    • 思想
    • 实现
        • 服务端线程类
        • 服务端
        • 客户端
    • 结果

背景

 如果服务端需要处理很多个客户端的消息通信请求应该如何处理呢,此时我们就需要在服务端引入线程了,也就是说客户端每发起一个请求,服务端就创建一个新的线程来处理这个客户端的请求,这样就实现了一个客户端一个线程的模型

思想

服务端

  • 实现服务端可以同时接收多个客户潘的Socket通信需求。
  • 是服务端每接收到一个客户端socket请求对象之后都交给一个独立的线程来处理客户端的数据交互沾求。

服务端线程类

  • 处理服务端传来的数据将其输出

客户端

  • 获取输入的数据并发送给服务端

实现

服务端线程类

  1. 继承Thread线程类
  2. 创建有参构造方法
  3. 从Socket中获得字节输入流
  4. 使用缓冲字符输入流包装字节输入流
  5. 再将字符输入流输出出去
public class ServerThread extends Thread{private Socket socket;public ServerThread(Socket socket){this.socket = socket;}@Overridepublic void run() {try {//从socket中得到字节输入流InputStream is = socket.getInputStream();//使用缓冲字符输入流包装字节输入流BufferedReader bfr = new BufferedReader(new InputStreamReader(is));String msg;while ((msg = bfr.readLine())!=null){System.out.println(msg);}} catch (IOException e) {e.printStackTrace();}}
}

服务端

  1. 注册接口
  2. 定义死循环持续接收客户端的消息
  3. 创建线程类处理socket通讯信息
public class Server {public static void main(String[] args) {try {//注册接口ServerSocket ss = new ServerSocket(8686);//定义死循环持续接收客户端的消息while (true){Socket socket = ss.accept();//创建线程类处理socket通讯信息new ServerThread(socket).start();}} catch (IOException e) {e.printStackTrace();}}
}

客户端

  1. 请求与服务端创建连接
  2. 获取socket输出流包装成打印流
  3. 利用循环不断的发消息给服务端
public class Client {public static void main(String[] args) {try {//请求与服务端创建连接Socket socket = new Socket("127.0.0.1",8686);//获取socket输出流包装成打印流OutputStream os = socket.getOutputStream();PrintStream ps = new PrintStream(os);//利用循环不断的发消息给服务端    Scanner sc = new Scanner(System.in);while (true){System.out.print("请输入发送内如:");String msg = sc.nextLine();ps.println(msg);ps.flush();}} catch (IOException e) {e.printStackTrace();}}
}

结果

创建多个客户端向服务端发送请求,服务端都成功将其打印
在这里插入图片描述

相关内容

热门资讯

中国电信人工电话多少 中国电信... 当我们在使用中国移动、中国电信和中国联通提供的电信业务时,可能会发生争议。建议直接向服务提供商投诉,...
埃菲尔铁塔在哪 中国仿建埃菲尔... 2019年4月26日,广西南宁市,街头惊现一座巨型山寨版埃菲尔铁塔,高约20米,白色塔身,造型逼真,...
苗族的传统节日 贵州苗族节日有... 【岜沙苗族芦笙节】岜沙,苗语叫“分送”,距从江县城7.5公里,是世界上最崇拜树木并以树为神的枪手部落...
北京的名胜古迹 北京最著名的景... 北京从元代开始,逐渐走上帝国首都的道路,先是成为大辽朝五大首都之一的南京城,随着金灭辽,金代从海陵王...
应用未安装解决办法 平板应用未... ---IT小技术,每天Get一个小技能!一、前言描述苹果IPad2居然不能安装怎么办?与此IPad不...
脚上的穴位图 脚面经络图对应的... 人体穴位作用图解大全更清晰直观的标注了各个人体穴位的作用,包括头部穴位图、胸部穴位图、背部穴位图、胳...
长白山自助游攻略 吉林长白山游... 昨天介绍了西坡的景点详细请看链接:一个人的旅行,据说能看到长白山天池全凭运气,您的运气如何?今日介绍...
猫咪吃了塑料袋怎么办 猫咪误食... 你知道吗?塑料袋放久了会长猫哦!要说猫咪对塑料袋的喜爱程度完完全全可以媲美纸箱家里只要一有塑料袋的响...
世界上最漂亮的人 世界上最漂亮... 此前在某网上,选出了全球265万颜值姣好的女性。从这些数量庞大的女性群体中,人们投票选出了心目中最美...
埃菲尔铁塔在哪 中国仿建埃菲尔... 2019年4月26日,广西南宁市,街头惊现一座巨型山寨版埃菲尔铁塔,高约20米,白色塔身,造型逼真,...
坐月子十大禁忌 坐月子的风俗禁... 前段时间,伊能静发微博说生两个孩子都40多天没洗澡,每天都用药水擦了擦身体。但也强调了,月子怎么做是...
苗族的传统节日 贵州苗族节日有... 【岜沙苗族芦笙节】岜沙,苗语叫“分送”,距从江县城7.5公里,是世界上最崇拜树木并以树为神的枪手部落...
北京的名胜古迹 北京最著名的景... 北京从元代开始,逐渐走上帝国首都的道路,先是成为大辽朝五大首都之一的南京城,随着金灭辽,金代从海陵王...