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

这里写目录标题

  • 线程池高并发服务器
  • 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)和外设…

用navicat进行mysql表结构同步

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

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

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

MySQl on和where条件的区别?

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

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

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

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

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

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,需…

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

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

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

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

配置中心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;让大家先对定时任务里面的一些核心概念有个大致的…

网络编程(1)写一个简单的UDP网络通信程序【回显服务器】,并且实现一个简单的翻译功能

使用 JAVA 自带的api 目录 一、回显服务器 UdpEchoServer 服务器代码 客户端代码 二、翻译功能 UdpDictServer 在UdpDictServer里重写process方法 一、回显服务器 UdpEchoServer /*** 回显服务器* 写一个简单的UDP的客户端/服务器 通信的程序* 这个程序没有啥业务逻辑&am…

TSINGSEE青犀智慧工厂视频汇聚与安全风险智能识别和预警方案

在智慧工厂的建设中&#xff0c;智能视频监控方案扮演着至关重要的角色。它不仅能够实现全方位、无死角的监控&#xff0c;还能够通过人工智能技术&#xff0c;实现智能识别、预警和分析&#xff0c;为工厂的安全生产和高效运营提供有力保障。 TSINGSEE青犀智慧工厂智能视频监…

PaddleGAN快速让你的照片动起来

一个不知名大学生&#xff0c;江湖人称菜狗 original author: Jacky Li Email : 3435673055qq.com Time of completion&#xff1a;2024.03.30 Last edited: 2024.03.30 目录 PaddleGAN快速让你的照片动起来 两个方案让照片动起来 方案一&#xff1a;FirstOrder 下载Paddle…

CAPL实现关闭TCP连接的几种方式以及它们的区别

在讲正文前,我们有必要复习下关闭TCP连接的过程:四次挥手。 假设A和B建立TCP连接并进行数据传输,当A的数据发送完后,需要主动发起断开连接的请求: A发送FIN报文,发起断开连接的请求B收到FIN报文后,首先回复ACK确认报文B把自己的数据发送完,发送FIN报文,发起断开连接的…

uniapp中安装vant2

1.uniapp项目搭建 因为是安装vant2所以项目选择vue2&#xff0c;如果vue3项目的话安装vant3 2.安装vant npm i vantlatest-v2 3.在main.js文件引入挂载vant 说明&#xff1a;// #ifndef VUE3这里是vue2模板用来挂载注册组件的地方&#xff1b;// #ifdef VUE3这里是vue3模板…

Spring Boot简介及案例

文章目录 Spring Boot简介以下是一个简单的 Spring Boot Web 应用实例**步骤 1&#xff1a;创建 Spring Boot 项目****步骤 2&#xff1a;编写 RESTful 控制器****步骤 3&#xff1a;配置主类****步骤 4&#xff1a;运行并测试应用** Spring Boot简介 Spring Boot 是一个用于简…

canvas跟随鼠标画有透明度的矩形边框

提示&#xff1a;canvas跟随鼠标画有透明度的矩形边框 文章目录 前言一、跟随鼠标画有透明度的矩形边框总结 前言 一、跟随鼠标画有透明度的矩形边框 test.html <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8">&…