24.网络编程(二)

news2024/11/15 8:23:42

目录

三.TCP通信

3.1 TCP协议特点

3.2 TCP协议通信场景

3.3 TCP通信模型演示

3.4 Socket

3.5 ServerSocket

3.6 注意事项

3.7 案例

3.7.1 TCP通信—单发单收

3.7.2 TCP通信—多发多收

3.7.3 TCP通信—同时接收多个客户端的消息。

3.7.4 TCP通信—使用线程池优化(最终版)

四.TCP通信—即时通信

4.1 即时通信概述

4.2 案例

五.TCP通信—模拟B/S系统

5.1 什么是B/S架构

5.2 HTTP协议格式

5.3 案例


三.TCP通信

3.1 TCP协议特点

1. 使用TCP协议,必须双方先建立连接,他是一种面向连接的可靠通信协议。
2. 传输前,采用“三次握手”方式建立连接,所以是可靠的。
3. 在连接中可进行大数据量的传输。
4. 连接、发送数据都需要确认、且传输完毕后,还需释放已建立的连接,通信效率较低。

3.2 TCP协议通信场景

对信息安全要求较高的场景,例如:文件下载、金融等数据通信。

3.3 TCP通信模型演示

3.4 Socket

Socket类 用于创建Socket通信管道,用于连接服务端。
1.构造器
2.常用API

3.5 ServerSocket

用于注册服务器端的端口
1.构造器
2.常用API

3.6 注意事项

1. 客户端怎么发,服务端就应该怎么收。
2. 客户端如果没有消息,服务端会进入阻塞等待。
3. Socket一方关闭或者出现异常,对方Socket也会失效或者出错。

3.7 案例

3.7.1 TCP通信—单发单收

客户端步骤:
①创建客户端的 Socket 对象,请求与服务端的连接。
②使 socket 对象调用 getOutputStream () 方法得到字节输出流。
③使用字节输出流完成数据的发送。
④释放资源:关闭 socket 管道。
客户端代码:
服务器端步骤:
①创建 ServerSocket 对象,注册服务端端口。
②调用 ServerSocket 对象的 accept() 方法,等待客户端的连接,并得到 Socket 管道对象。
③通过 Socket 对象调用 getInputStream () 方法得到字节输入流、完成数据的接收。
④释放资源:关闭 socket 管道
服务器端代码:

3.7.2 TCP通信—多发多收

改进案例1:
①可以使用死循环控制服务端收完消息继续等待接收下一个消息。
②客户端也可以使用死循环等待用户不断输入消息。
③客户端一旦输入了 exit ,则关闭客户端程序,并释放资源。
客户端代码:
服务端代码:
注意:本例实现了多发多收,但是服务端只能与一个客户端进行通信,因为服务端只有一个线程。

3.7.3 TCP通信—同时接收多个客户端的消息。

服务端如何同时与多个客户端通信:引入多线程
客户端代码:
服务端代码:
线程代码:

3.7.4 TCP通信—使用线程池优化(最终版)

优点:
服务端可以复用线程处理多个客户端,可以避免系统瘫痪。
适合客户端通信时长较短的场景。
客户端代码:
服务器端代码:
线程代码:

四.TCP通信—即时通信

4.1 即时通信概述

之前我们的消息都是发给服务端的,即时通信是指一个客户端的消息发出去,其他客户端可以接收到。
即时通信需要进行端口转发的设计思想。

4.2 案例

实现即时通信。
客户端代码:
客户端接收消息的线程:
服务端代码:
服务端线程任务类:

五.TCP通信—模拟B/S系统

之前的客户端需要我们自己去开发实现,其实就是C/S架构。

5.1 什么是B/S架构

B/S架构就是使用浏览器去访问服务器端,不需要开发客户端。

5.2 HTTP协议格式

5.3 案例

服务器端代码:
线程任务类;

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/187725.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

工业相机和镜头

工业相机和镜头镜头型号数据电源接口定焦镜头的调焦景深景深大小光圈相机、镜头选取参考镜头型号、数据电源接口、定焦镜头的调焦、景深、景深大小、光圈、相机、镜头选取 镜头型号 C,CS系列:相机镜头的C、CS接口非常相似,它们的接口直径、螺…

检索业务:基本数据渲染和排错

采用标签显示商品的数据 <div class"rig_tab"><div th:each"product:${result.getProducts()}"><div class"ico"><i class"iconfont icon-weiguanzhu"></i><a href"/static/search/#">…

5、数据的重构

目录 一、为什么进行数据重构 二、如何进行数据重构 一、为什么进行数据重构 进行数据分析时&#xff0c;有可能会发现数据的结构并不适合直接进行数据分析操作&#xff0c;如下面数据&#xff0c;但通过复制-粘贴-转置等方法操作又太繁琐&#xff0c;数据量小还行&#xff…

C++ 图进阶系列之 kruskal 和 Prim 算法_图向最小生成树的华丽转身

1. 前言 树和图形状相似&#xff0c;也有差异性。树中添加一条或多条边&#xff0c;可成图。图中减小一条或多条边&#xff0c;可成树。形态的变化由数据之间的逻辑关系决定。 图用来描述数据之间多对多关系。树用来描述数据之间一对多关系。 思考如下问题&#xff1f; 如果…

esp32 烧录协议

esp32的rom固化了出场固件。进入烧录模式后&#xff0c;esp32串口输出&#xff1a;给esp32烧录固件的时候&#xff0c;需要和rom的bootloder进行通讯。通讯时&#xff0c;使用 SLIP 数据包帧进行双向数据传输。每个 SLIP 数据包都以 0xC0 开始和结束。 在数据包中&#xff0c;所…

9、Servlet——Request对象

目录 一、get请求和post请求的区别 二、Request对象的应用 1、request主要方法 2、request获取数据 3、设置请求的编码格式 三、解决get请求收参乱码问题 四、解决post请求中文乱码问题 一、get请求和post请求的区别 在Servlet中用来处理客户端请求需要用doGet()方法或…

openGauss数据库源码解析系列文章——备份恢复机制:openGauss全量备份技术

目录 10.1 openGauss全量备份技术 10.1.1 gs_basebackup备份工具 10.1.2 gs_basebackup备份交互流程 本文主要介绍openGauss的备份恢复原理和技术。备份恢复是数据库日常维护的一个例行活动&#xff0c;通过把数据库数据备份到另外一个地方&#xff0c;可以抵御介质类的损…

数据结构与算法-稀疏数组

Java高级系列文章前言 本文章涉及到数据结构与算法的知识&#xff0c;该知识属于Java高级阶段&#xff0c;通常为学习的二阶段&#xff0c;本系列文章涉及到的内容如下&#xff08;橙色框选内容&#xff09;&#xff1a; 本文章核心是教学视频&#xff0c;所以属于个人笔记&a…

深度卷积对抗神经网络 基础 第六部分 缺点和偏见 GANs Disadvantages and Bias

深度卷积对抗神经网络 基础 第六部分 缺点和偏见 GANs Disadvantages and Bias GANs 综合评估 生成对抗网络&#xff08;英语&#xff1a;Generative Adversarial Network&#xff0c;简称GAN&#xff09;是非监督式学习的一种方法&#xff0c;透过两个神经网络相互博弈的方式…

实体对齐(三):RNM

一.摘要 实体对齐旨在将来自不同知识图&#xff08;KG&#xff09;的具有相同含义的实体联系起来&#xff0c;这是知识融合的重要步骤。 现有研究侧重于通过利用知识图谱的结构信息学习实体嵌入来进行实体对齐。这些方法可以聚合来自相邻节点的信息&#xff0c;但也可能带来来…

从软件开发角度看待PCI和PCIe

从软件开发角度看待PCI和PCIe 文章目录从软件开发角度看待PCI和PCIe参考资料&#xff1a;一、 最容易访问的设备是什么二、 地址空间的概念三、 理解PCI和PCIE的关键3.1 地址空间转换3.2 PCI接口速览3.3 PCIe接口速览四、 访问PCI/PCIe设备的流程4.1 PCI/PCIe设备的配置信息4.2…

特斯拉2022全年财报摘要

重点一览一、盈利方面 2022全年营业利润率为16.8%&#xff0c;其中第四季度为16.0% 2022全年GAAP营业利润为137亿美元&#xff0c;其中第四季度为39亿美元 2022全年GAAP净利润为126亿美元&#xff0c;其中第四季度为37亿美元 2022全年非GAAP净利润为141亿美元&#xff0c;其中…

MySQL中的多表联合查询

目录 一.介绍 数据准备 交叉连接查询 内连接查询 外连接 子查询 特点 子查询关键字 all关键字 any关键字和some关键字 in关键字 exists关键字 自关联查询 总结 一.介绍 多表查询就是同时查询两个或两个以上的表&#xff0c;因为有的时候用户在查看数据的时候,需要…

四足机器人发展史及机器人盘点

四足机器人发展史及机器人盘点 本文翻译整理自文章 四足行走机器人发展综述 20世纪初前后 1870 CHebyshev(沙俄)发明了第一个行走机构, 将旋转运动转换为匀速平动运动. - 由于连接机构形似希腊字母λ, 该连杆命名为λ机构. - 可在平面运动, 没有独立的腿部运动 - Rygg(美国…

windows下nodejs下载及环境变量配置,运行vue项目

文章目录1.下载安装node.js2.环境变量配置&#xff08;重点&#xff09;3.切换镜像源切换yarn作为主力命令1.下载安装node.js 1.https://registry.npmmirror.com/binary.html 搜索node&#xff0c;下载对应的版本&#xff0c;安装即可。一路next&#xff0c;路径选择自己想放置…

与string容易混淆的类——StringBuilder

目录 StringBuilder类概述及其构造方法 StringBuilder类的常用方法 StringBuilder类练习 StringBuilder类概述及其构造方法 StringBuilder类概述–我们如果对字符串进行拼接操作&#xff0c;每次拼接&#xff0c;都会构建一个新的String对象&#xff0c;既耗时&#xff0c;…

verilog图像算法实现与仿真(流程和实现)

【声明&#xff1a;版权所有&#xff0c;欢迎转载&#xff0c;请勿用于商业用途。 联系信箱&#xff1a;feixiaoxing 163.com】 前面我们谈到了fpga&#xff0c;谈到了用pythoncv2实现图像算法&#xff0c;直到现在才算是慢慢进入了正题。毕竟用verilog实现图像算法&#xff0c…

HalfEdge半边数据结构详解

我们可以将离散表面表示为多边形网格。 多边形网格可以被认为是图&#xff08;具有顶点和顶点之间的边&#xff09;加上面列表&#xff0c;其中面是边的环。 推荐&#xff1a; 使用 NSDT场景设计器 快速搭建 3D场景。 下面&#xff0c;我们将网格指定为顶点列表和面列表&#…

【博学谷学习记录】大数据课程-学习第四周总结

分布式技术 为什么需要分布式 计算问题 无论是我们在学校刚开始学编程&#xff0c;还是在刚参加工作开始处理实际问题&#xff0c;写出来的程序都是很简单的。因为面对的问题很简单。以处理数据为例&#xff0c;可能只是把一个几十K的文件解析下&#xff0c;然后生成一个词频…

Python正则表达式所有函数详解

文章目录1 fullmatch2 match3 search4 findall5 finditer6 split7 sub8 compile本篇博客主要讲解正则表达式相关的函数&#xff0c;均不涉及复杂的正则表达式语法。如需了解正则表达式语法&#xff0c;请参考下面的文章&#xff1a;Python正则表达式语法详解1 fullmatch Pytho…