当前位置: 首页 > 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架构

代码修改如下:

http://www.xdnf.cn/news/110233.html

相关文章:

  • 基于 Vue 2 开发的分页卡片列表组件(带懒加载和点击事件)
  • [特殊字符] 分布式事务中,@GlobalTransactional 与 @Transactional 到底怎么配合用?
  • Python爬虫实战:获取xie程网敦煌景点数据,为51旅游路线做参考
  • Python实现图片浏览器
  • 连锁美业管理系统「数据分析」的重要作用分析︳博弈美业系统疗愈系统分享
  • 使用 Python 打造强大的文件分析工具
  • 海量粒子特效解决方案:VEG
  • java六人打分
  • 高效并发编程:无锁编程
  • 字节系a_bogus补环境
  • 浏览器相关知识点
  • 路由交换实验-手动聚合与LACP
  • 自动创建 中国古代故事人物一致性图画,看看扣子的空间是否能达到你的满意,自媒体的福音?
  • 【KWDB 创作者计划】_上位机知识篇---MicroPython
  • 一,开发环境安装
  • w~大模型~合集13
  • AUTODL关闭了程序内存依然占满怎么办
  • 〖 Linux 〗掌握 Linux 共享目录:权限、管理与最佳实践
  • 防火墙事件日志及日志分析
  • Python数据清洗笔记(上)
  • 文件内容隐写
  • 面向电力变压器的声纹智能诊断系统简析
  • Springfox + Swagger 的完整配置及同类框架对比的详细说明
  • (即插即用模块-特征处理部分) 四十一、(2024) MSAA 多尺度注意力聚合模块
  • 我的独立开发技术栈
  • 未曾设想的道路1
  • Ubuntu22.04新版本谷歌无法使用搜狗输入法/中文不显示
  • 三、Python编程基础03
  • 使用Python模拟子弹与子弹的碰撞
  • 四神-华夏大地的守护神