网络编程--高并发服务器(二)

这里写目录标题

  • 线程池高并发服务器
  • UDP服务器
    • TCP与UDP机制的对比
    • TCP与UDP优缺点比较
    • UDP的C/S模型实现思路
      • 模型分析
      • 实现思路(对照TCP的C/S模型)
    • 二级目录
  • 一级目录
    • 二级目录
    • 二级目录
    • 二级目录
  • 一级目录
    • 二级目录
    • 二级目录
    • 二级目录
  • 一级目录
    • 二级目录
    • 二级目录
    • 二级目录

线程池高并发服务器

UDP服务器

TCP与UDP机制的对比

在这里插入图片描述
TCP是面向连接的,可靠的数据包传输,也就是他会在复杂的网络环境中,在通信两端建立起连接,可以弥补网络层的不稳定,如果传输过程中丢包,那么会重新传递丢掉的包(主要依赖于ACK应答实现)

而UDP没有连接,且使用不可靠的数据报传递数据,类似于发电报的形式,他的每次数据传输路径都是随机的,且他并不负责查看是否数据被对方收到,我知道了你的地址,我只负责向目标地址发过去,具体收没收到,并不理会

TCP与UDP优缺点比较

在这里插入图片描述
TCP稳定性强,但是效率慢,开销大。主要应用于大数据传输、文件传输
UDP稳定性差,但是效率快,开销小。主要应用于游戏、视频会议、视频电话
但是,对于一些大厂,他会在利用UDP效率高的基础上,在应用层加入数据校验协议,弥补UDP的不稳定性等不足,相当于自己封装了协议

而针对于稳定性的原因:
TCP在网络中,在一个一个的路由节点网中,一旦建立了AB两端的连接,那么接下来所有的数据,都会按照既定顺序在该路线进行传输,所以,稳定性强,且数据的到达顺序是可预见的(因为只有一条线,谁先发送谁就会先到达):
在这里插入图片描述
而UDP:
他不会建立连接,他只知道B端的地址,所以会以随机的路径进行传输,那么第一个是路径随机,稳定性会无法保证,更重要的是,因为每次数据传输的路径随机,可能第二个发送的数据,他的路径要比第三个发送的数据的路径复杂,也就出现了第三个发送的数据会比第二个发送的数据更早到达目的地,所以,有顺序会被打乱的可能性:
在这里插入图片描述

UDP的C/S模型实现思路

模型分析

在这里插入图片描述

实现思路(对照TCP的C/S模型)

在这里插入图片描述
首先,由于UDP并不进行三次握手,所以,服务端的accept()、客户端的connect()函数都被舍弃
所以,对于server端来说:
首先还是要创建一个socket套接字,只不过这里的第二个参数传入SOCK_DGRAM,表示报式协议,且第三个参数还是传入0,表示默认的报式协议,即UDP
之后bind(),绑定地址结构
listen(),本来的功能是设置于服务端同时进行三次握手的最大客户端数量,但是UDP并不进行三次握手,所以,该函数也被舍弃
之后进入while循环,在循环内,无需做任何连接相关的操作,所以我们可以直接进行数据的读写,但是这里read、write函数都无法使用了,因为我们没有connfd,且recv、send函数也不能用,因为他们只能用于TCP,所以,这里read被替换成recvfrom函数,之后进行业务代码,最后将结过通过sendto函数写回。
最后关闭
然后来看client端:
首先在客户端需要创建一个客户端的socket,这里命名有些不妥,可以命名为clientfd,之后无需connect函数了,直接进行数据的读写即可,直接sendto,向服务端发送数据,然后revfrom接收服务端处理完之后的数据,最后写到屏幕,然后关闭客户端套接字

二级目录

一级目录

二级目录

二级目录

二级目录

一级目录

二级目录

二级目录

二级目录

一级目录

二级目录

二级目录

二级目录

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

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

相关文章

【跟着CHATGPT学习硬件外设 | 05】I2C

本文根据博主设计的Prompt由CHATGPT生成,形成极简外设概念。 🚀 1. 概念揭秘 I2C(Inter-Integrated Circuit),也被称为IIC或双线接口,是一种用于微控制器(Microcontrollers)和外设…

前端开发学习笔记(1)

文章目录 基础概念VSCode常用插件和快捷键VSCode常用插件VSCode常用快捷键 常用标签和属性 基础概念 网页和网站: 网页:网站中的一页,通常是HTML格式的文件。网页是由网页元素组成的,这些元素用HTML标签描述,然后通过…

用navicat进行mysql表结构同步

用navicat进行mysql表结构同步 前言新增一个列然后进行表结构同步删除一个列然后进行表结构同步把Int列转成TinyInt列,看数字溢出的情况下能不能表结构同步总结 前言 从同事那边了解到还能用navicat进行表结构同步,他会在发布更新的时候,直接…

如何在智能交通系统中使用物联网技术提高道路安全和效率

在智能交通系统中,物联网(IoT)技术可以通过多种方式提高道路安全和效率。以下是利用物联网技术提高智能交通系统效能的具体方法: 1. 车与路、车与车通信(V2X):通过在道路上部署传感器和路侧单元…

Python基础之Class类的定义、继承、多态

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 一、class类1.类属性操作(增删改)2.类方法操作 二、类的继承1、语法2、方法重写 二、类的多态 一、class类 、三部分组成 1、类名&#xff…

Typescript再学习-接口interface声明函数(6)

话不多说,直接上代码 interface student {// 普通函数name(studentName: string): string;//箭头函数age: (studnetAge: number) > number; }let LiMing: student {// 普通函数name: function (studentName: string) {return studentName;},// 箭头函数age: (s…

MySQl on和where条件的区别?

MySQ L on和where条件的区别? on会生成临时表,不满足条件会置空 where 过滤数据,不满足的数据不会显示

木地板 VS 瓷砖,不同风格应该怎么选?福州中宅装饰,福州装修

不同装修风格应该怎么选择地板铺贴材质?是选择木地板还是瓷砖?以下分点阐述: ①现代简约风格 推荐使用瓷砖。因为瓷砖的表面光滑,能反射出灯光的倒影,营造出简洁明亮的视觉效果。同时,瓷砖耐磨、易清洁&am…

【ZZULIOJ】1015: 计算时间间隔(Java)

目录 题目描述 输入 输出 样例输入 Copy 样例输出 Copy code 题目描述 读入两个用“时:分:秒”表示的时间点,计算以秒为单位的时间间隔。 输入 输入有两行,每行是一个用“时:分:秒”表示的时间点。测试数据保证第二个时间点晚于第一个时间点。 …

算法——动态规划:01背包

原始01背包见下面这篇文章:http://t.csdnimg.cn/a1kCL 01背包的变种:. - 力扣(LeetCode) 给你一个 只包含正整数 的 非空 数组 nums 。请你判断是否可以将这个数组分割成两个子集,使得两个子集的元素和相等。 简化一…

Vue 表单数据双向绑定 v-mode

每一个Vue项目,每一个系统,肯定涉及到表单的双向数据绑定问题,这一部分是 vue 的重中之重,不是因为知识点复杂,而是因为只要参与 vue 项目的开发,那么就必不可少。 单项绑定 :数据变&#xff0…

Mysql从0到1 —— CRUD/索引/事务

文章目录 1 预备知识1.1 安装1.2 登录 & 退出1.3 配置文件my.cnf 2 基础知识2.1 链接服务器2.2 什么是数据库2.3 基本使用2.3.1创建表2.3.2 插入数据 2.4 服务器、数据库、表的关系2.5 SQL分类2.6 存储引擎 3 Mysql数据库的操作3.1 创建和删除3.2 字符集和校验规则3.3 查看…

javaScript之递归

什么是递归? 递归函数是在一个函数内通过名字调用自身的情况下构成的。 递归的优点 递归可以用来处理循环解决起来比较麻烦的问题 方法: 1,函数自己调用自己 2,找规律,找出这一次和上一次的关系 2,需…

Python数据分析八

一、Python之列表的切片取值 在Python中,我们可以使用切片操作来获取列表中的子集。切片操作使用[start:end:step]的语法,其中start表示起始位置的索引(包含),end表示结束位置的索引(不包含)&a…

这是斗魂大赛?不!是斗美大赛!

最近《绝世唐门》中斗魂大赛正如火如荼地展开,每场对战都十分精彩,令人心潮澎湃,忍不住大喊“过瘾”! 除了扣人心弦的打斗场面,新登场的角色们更是颜值爆表,美得令人心动,帅得让人窒息。不得不赞…

准备Python环境学习OpenCV的使用

安装venv模块,执行如下命令: sudo apt-get install python3-venv创建venv环境,命名为images,执行如下命令: python3 -m venv images进入新建的环境images,执行如下命令: cd images source ./…

机器学习模型及其使用方法——《机器学习图解》

本书教你两件事——机器学习模型及其使用方法 机器学习模型有不同的类型,有些返回确定性的答案,例如是或否,而另一些返回概率性的答案。有些以问题的形式呈现;其他则使用假设性表达。这些类型的一个共同点是它们都返回一个答案或…

配置中心apollo==springboot使用apollo

多环境的APOLLO之前已经搭建好了。 新建一个SPRINGBOOT项目 <dependency> <groupId>com.ctrip.framework.apollo</groupId> <artifactId>apollo-client</artifactId> <version>2.2.0</version> </dependency> <?x…

L2-4 部落

在一个社区里&#xff0c;每个人都有自己的小圈子&#xff0c;还可能同时属于很多不同的朋友圈。我们认为朋友的朋友都算在一个部落里&#xff0c;于是要请你统计一下&#xff0c;在一个给定社区中&#xff0c;到底有多少个互不相交的部落&#xff1f;并且检查任意两个人是否属…

实现定时任务

定时任务的实现方式有很多&#xff0c;比如XXL-Job等。但是其实核心功能和概念都是类似的&#xff0c;很多情况下只是调用的API不同而已。 这里就先用SpringBoot为我们提供的定时任务的API来实现一个简单的定时任务&#xff0c;让大家先对定时任务里面的一些核心概念有个大致的…