[进阶]网络通信:TCP通信-支持与多个客户端同时通信

news/2024/10/31 7:33:11/

目前我们开发的服务端程序,是否可以支持与多个客户端同时通信?

  • 不可以的。
  • 因为服务端现在只有一个主线程,只能处理一个客户端的消息。

 代码演示如下:

客户端:

public class Client {public static void main(String[] args) throws Exception{System.out.println("客户端开启!");//1.创建Socket对象,并同时请求与服务端程序的连接。Socket socket = new Socket("127.0.0.1",8888);//2.从socket通信管道中得到一个字节输出流。用来发数据给服务端程序OutputStream os = socket.getOutputStream();//3.把低级的字节输出流包装成数据输出流DataOutputStream dos = new DataOutputStream(os);Scanner sc = new Scanner(System.in);while (true) {System.out.println("请输入:");String msg = sc.nextLine();//一旦用户输入了exit,就退出客户端程序if ("exit".equals(msg)){System.out.println("退出成功!");dos.close();socket.close();break;}//4.开始写数据出去了dos.writeUTF(msg);dos.flush();}}
}

服务端:
 

public class Server {public static void main(String[] args) throws Exception{System.out.println("服务端开启!");//1.创建ServerSocket的对象,同时为服务端注册端口。ServerSocket serverSocket = new ServerSocket(8888);while (true) {//2.使用serverSocket对象,调用一个accept方法,等待客户端的连接请求Socket socket = serverSocket.accept();System.out.println("有人上线了:" + socket.getRemoteSocketAddress());//3.把这个客户端对应的socket通信管道,交给一个对立的线程负责处理new ServerReaderThread(socket).start();}}
}

线程类:

public class ServerReaderThread extends Thread{private Socket socket;public ServerReaderThread(Socket socket){this.socket = socket;}@Overridepublic void run(){try {InputStream is = socket.getInputStream();DataInputStream dis = new DataInputStream(is);while (true) {try {String msg = dis.readUTF();System.out.println(msg);} catch (IOException e) {System.out.println("有人下线了:"+ socket.getRemoteSocketAddress());dis.close();socket.close();break;}}} catch (IOException e) {e.printStackTrace();}}
}

http://www.ppmy.cn/news/516175.html

相关文章

最小二乘支持向量机”在学习偏微分方程 (PDE) 解方面的应用(Matlab代码实现)

💥 💥 💞 💞 欢迎来到本博客 ❤️ ❤️ 💥 💥 🏆 博主优势: 🌞 🌞 🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 …

函数重载与函数匹配

函数匹配过程: 1.候选函数:选择与函数名同名的所有重载函数集合,包括模板,模板具体化,非模板函数; 2.可行函数:根据函数特征标选择能被这组实参调用的函数 3.寻找最佳匹配: 多个形…

OPPOR9s 官方原厂售后线刷包救砖包解账户锁屏幕锁

R9S下载地址: https://pan.baidu.com/s/1hfGw31ymr5Ph0ARL7aRNAA

9008刷机工具_黔隆科技刷机教程OPPOR9S忘记密码免刷机保资料解屏幕锁教程

手机刷机解锁你还在大海捞针的寻找方法吗?告诉你个黑科技,关注微信公众号黔隆科技后回复刷机+手机型号,系统就会自动为你寻找最适合的刷机解锁教程,省时又省力。 OPPOR9S出来已经有一段时间了,相信大家都体验到了新机的强大了吧 !可使用时难免会发生一些意外,比如密码忘…

oppo9s刷机教程_OPPOR9S海外版官方固件刷机教程_线刷|救砖教程图解

三:oppoR9s使用OPPO自带工具线刷教程详解 1、安装驱动(有两个驱动都是需要安装的,驱动在线刷包里,下载即可看到) ①安装驱动1,如下图所示: ②安装驱动2,如下图所示: 2、打开工具,如下图所示(记住用管理员身份运行) 解压刷机包前,请关闭一切杀毒软件,如果误删了文件,…

高通210系列-MSM8909 核心板(ARM Cortex-A7架构)

核心板特性 A7架构 4核(4*1.1GHz(A7)) 产品尺寸小,便于客户集成,减少产品体积; 支持4G LTE超高速上网,单板兼容移动/联通/电信2G/3G/4G; 支持232存储器,Micro SD支持32G; 尺寸小、…

高通平台的耳机检测(msm8909)

记录高通msm8909耳机检测的机制&#xff0c;相关代码 kernel/arch/arm/boot/dts/qcom/msm8909-qrd-skuc.dtsi sound {compatible "qcom,msm8x16-audio-codec";qcom,model "msm8909-skuc-snd-card";qcom,msm-snd-card-id <0>;qcom,msm-codec-type…

高通 msm8909 watchdog overview

高通的描述 看门狗定时器是一个固定长度的计数器&#xff0c;它使系统能够从意外的硬件或软件灾难中恢复。 除非系统定期重置看门狗定时器&#xff0c;否则看门狗定时器会在定时器超时后自动重置系统。 MSM ASIC 为芯片系统使用了一个看门狗定时器。 调制解调器软件负责重置看…