当前位置: 首页 > news >正文

Java基础复习(JavaSE进阶)第九章 网络编程

9-1 通信三要素

01 189、网络编程概述

02 190、通信三要素:IP地址

03 191、通信三要素:InetAddress

是一个类,存储了一些有用的,关于IP地址操作的方法

04 192、通信三要素:端口号

05 193、通信三要素:协议-UDP

在这种通讯场景中偶尔的丢包是影响不大的,就可以使用UDP协议

06 194、通信三要素:协议-TCP

9-2 UDP、TCP通信

01 195、UDP通信:客户端发消息

代码实现如下:

客户端:

02 196、UDP通信:服务端收消息,测试

03 197、UDP通信:多发、多收

采用一个while死循环配合扫描器实现多发,检测exit命令,出现命令测跳出循环并关闭通信释放资源。

采用while死循环实现服务器的多收,重要前提是不能使用socket.close()服务器不能停止

那这个服务端能不能接收多个客户端数据呢?

我们再创建一个客户端示例,保证两个客户端端口不同,且配置了多开实例的配置

实验证明我们的服务端是可以同时接收多个客户端数据的。

04 198、TCP通信:客户端开发

代码实现如下:

05 199、TCP通信:服务端开发

代码实现如下:

06 200、TCP通信:多发多收

9-3 TCP通信

01 201、TCP通信:支持与多个客户端同时通信的原理

02 202、TCP通信:用代码实现与多个客户端同时通信

首先,我们需要利用多线程去解决这个问题

public class Server {public static void main(String[] args) throws Exception {//1.创建一个服务器Socket对象,同时指定端口号ServerSocket serverSocket = new ServerSocket(10086);while (true){//2.使用ServerSocket对象,调用accept方法,等待客户端的链接请求Socket socket = serverSocket.accept();//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){String msg = dis.readUTF();System.out.println("服务器接收到客户端发送的消息:"+msg);}} catch (Exception e) {e.printStackTrace();}}
}

03 203、TCP通信:群聊(拓展,可选)

第一步:在服务器中定义一个集合用于存储socket

第二部:设计一个方法sendMessageToAll来实现群聊

第三步:创建管道

第四步:在client中:

04 204、TCP通信:实现BS架构

server:

ServerReaderThread:

注意:响应后立刻关闭管道。下次调用会借助while死循环创建新的线程去应对

修改后:

05 205、TCP通信:线程池优化BS架构

代码修改如下:

相关文章:

  • 考研单词笔记 2025.04.23
  • 脂质体挤出器有哪些知名品牌?
  • 2025深圳中兴通讯安卓开发社招面经
  • 【金仓数据库征文】从Oracle到KingbaseES的语法兼容与迁移
  • Spring Boot 项目:如何在 JAR 运行时读取外部配置文件
  • 【每日八股】复习计算机网络 Day4:TCP 协议的其他相关问题
  • 【Java学习笔记】random的使用
  • 并行RANSAC平面拟合(C++)
  • [特殊字符]‍[特殊字符]Linux驱动开发入门 | 并发与互斥机制详解
  • ActiveMQ 核心概念与消息模型详解(二)
  • centos7 设置EMQX开机自启动(创建init.d脚本来设置emqx的自启动服务)
  • 文档构建:Sphinx全面使用指南 — 实战篇
  • leetcode 二分查找应用
  • 未曾设想的道路1
  • idea无法下载源代码
  • 使用Python模拟子弹与子弹的碰撞
  • 蓝桥杯 19. 最大比例
  • 阳光乳业2024年营收、利润双降:囿于一隅,市场单一化困局何解?
  • 抱佛脚之学SSM五
  • Rust 学习笔记:安装 Rust
  • 神舟十九号航天员乘组平安抵京
  • 中央党校(国家行政学院)举行2025年春季学期第一批进修班毕业典礼
  • 山西太原一处居民小区发生爆炸,现场产生大量浓烟
  • 摩根大通任命杜峯为亚太区副主席,加码中国市场业务布局
  • 青海西宁市城西区副区长于媛媛主动投案,接受审查调查
  • 工行一季度净赚841亿元降3.99%,营收降3.22%