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

UDP网络编程

UDP和TCP

前几节我们提到了计算机网络编程中的TCP编程,TCP和UDP都是计算机机网络通信的传输层中的传输协议,今天我们来学习计算机网络编程中的基于UDP传输协议的网络编程

首先我们要了解TCP和UDP的区别

它们是同属于计算机网络传输层的传输协议

TCP:传输控制协议,全称 Transmission Control Protocol ,是面向连接、可靠的、基于字节流的传输层协议。

UDP:支持无连接的一个传输协议,全称用户数据报协议(User Datagram Protocol)。UDP为应用程序提供了一种无需建立连接就可发送封装的数据包的方法。它不提供复杂的机制,只是利用IP来提供面向无连接的一种通信协议。

TCP是面向连接的,通过三次握手建立连接,四次挥手解除连接;而UDP是面向无连接的,它发送数据是不需要建立连接的,这样大大的提高了它的传输效率,但是不能确保数据是否完整的传输。
TCP是一种可靠的通信方式,TCP通过超时重传、确认应答、拥塞控制等机制来确保数据无差错、不丢包、不重复且有序;而UDP由于是无连接的,它会以最大的传输效率进行数据的传输,但不能保证数据传输的可靠交付,所以就会出现数据的丢失、重复等问题
TCP首部开销大占20个字节,而UDP的首部才占8个字节,开销小
TCP协议提供可靠的、面向连接的传输服务,一般用于文件的传输、邮件的发送以及远程设备的控制;而UDP无需建立连接,传输效率高,不需要接收任何确认回复,可以用于即时的通信,例如QQ或WeChat的语言、视频通话以及抖音、斗鱼等平台的直播
TCP因需要建立连接所以消耗资源大、而UDP不需要建立连接所以消耗资源小
每一条TCP连接只能是点到点的;而UDP不建立连接,所以可以支持一对一,一对多,多对一和多对多的交互通信,也就是可以同时接受多个人的包。

我们可以回顾一下之前TCP编程的流程 需要客户端和服务器端双向的通过三次握手建立连接 通过四次挥手解除连接 整个过程是非常严谨的 所以他本身是可靠的

今天我们学习的UDP编程 它是不需要连接 直接通过ip来传输数据 因此它是不可靠的

TCP编程流程

UDP协议的编程流程

 

UDP服务器端: 

 

 

 UDP客户端:

 

 

编译运行后我们发现可以正常通信

然后我们关闭服务器端 再开启 然后再发送数据 查看是否可以接收

 

 

 这是为什么呢 因为我们前面提到了UDP协议中客户端和服务器并不会建立所谓的连接

发送数据的形式就是 如果我发送了 然后如果你是开启的 那么就可以发送成功

并不会和使用TCP编程时一样发生阻塞

接下来 我们开启第二个客户端给服务器发送数据

 

可以看到我们也可以正常发送 

那么UDP就不存在TCP那种需要处理并发的情况

UDP这里处理这种情况的方式就是 只要你开着 我给你发就可以 并不需要确保成功

那么到这里 我们就学习完成了UDP和TCP传输协议的网络编程

这两种协议各有利弊 我们可以根据情况选择使用 

 

 

相关文章:

UDP网络编程

UDP和TCP 前几节我们提到了计算机网络编程中的TCP编程,TCP和UDP都是计算机机网络通信的传输层中的传输协议,今天我们来学习计算机网络编程中的基于UDP传输协议的网络编程 首先我们要了解TCP和UDP的区别 它们是同属于计算机网络传输层的传输协议 TCP&…...

“合并区间”问题解析及其思考

合并区间题目以数组 intervals 表示若干个区间的集合,其中单个区间为 intervals[i] [starti, endi] 。请你合并所有重叠的区间,并返回 一个不重叠的区间数组,该数组需恰好覆盖输入中的所有区间 。解析本题思路相对比较容易想先对各个区间按左…...

2023年理想新能源汽车核心部件解密

理想主要硬件清单(L9车型) 汽车结构 设置名称 规格 备注 价格 供应商 感知层...

C++ 将一个vector内容赋值给另一个vector,及swap与assign的区别

在本文中&#xff0c;我们将主要介绍5种将一个vector内容赋值给另一个vector的方式&#xff0c;顺便讨论下swap与assign的区别。 赋值 方式一、申明时赋值 vector<int> v2; v2.push_back(0); v2.push_back(1);vector<int> v1(v2); //声明方式二、使用assign赋值…...

PMP的价值有哪些?

我个人认为&#xff0c;考证只有两个出发点是正确的。一是为了提升自己或者满足自己的兴趣&#xff0c;另一个是和自己的职业规划相关。 比如&#xff0c;有同学想提升自己英语能力&#xff0c;可以考四六级&#xff0c;或者更厉害一点的考雅思、托福。比如&#xff0c;有的同…...

OnGUI label 控件||Unity 3D GUI教程||OnGUI Background Color 控件

Unity 3D Label 控件用于在设备的屏幕上创建文本标签和纹理标签&#xff0c;和Box 控件类似&#xff0c;可以显示文本内容或图片。Label 控件一般用于显示提示性的信息&#xff0c;如当前窗口的名称、游戏中游戏对象的名字、游戏对玩家的任务提示和功能介绍等。具体使用方法如下…...

从 JavaScript 中的数组中删除空对象

从数组中删除空对象&#xff1a; 使用 Array.filter() 方法遍历数组。将每个对象传递给 Object.keys() 方法并检查键的长度是否不等于 0。filter 方法将返回一个不包含空对象的新数组。 const arr [{}, {id: 1}, {}, {id: 2}, {}];const results arr.filter(element > {…...

【C++】AVL树和红黑树(插入和测试详解)

文章目录1、AVL树1.1 AVL树的插入1.2 总结与测试AVL树2、红黑树2.1 红黑树的插入2.2 红黑树的测试了解AVL树是为了了解红黑树&#xff0c;了解红黑树是为了更好的理解set和map。 1、AVL树 AVL树是在二叉搜索树的基础上进行了严格的平衡&#xff0c;能做到平衡的关键是通过平衡…...

Centos7 安装 Mysql 8.0.32,详细完整教程(好文章!!)

mysql5.7的安装方式参考之前的文章&#xff1a; centos7 安装 Mysql 5.7.27&#xff0c;详细完整教程&#xff08;好文章&#xff01;&#xff01;&#xff09;_HD243608836的博客-CSDN博客 一、检查mysql版本冲突 先检查是否已经存在mysql&#xff0c;若存在卸载&#xff0…...

Apache Beanutils为什么被禁止使用?

收录于热门专栏Java基础教程系列&#xff08;进阶篇&#xff09; 在实际的项目开发中&#xff0c;对象间赋值普遍存在&#xff0c;随着双十一、秒杀等电商过程愈加复杂&#xff0c;数据量也在不断攀升&#xff0c;效率问题&#xff0c;浮出水面。 问&#xff1a;如果是你来写…...

sql server执行md5加密的时候,字符串前带N和不带N的结果是不一样的

最近因为项目的需要&#xff0c;报表中需要对数据进行MD5加密&#xff0c;结果报表系统得出来的sql语句&#xff0c;字符串前都自动带了N&#xff0c;执行时&#xff0c;发现得到的结果跟在数据库中执行的sql&#xff08;字符串不带N&#xff09;得的值不一样&#xff0c;最后自…...

01Python编译器和编辑器下载

Python下载 通过python官网下载:https://www.python.org/因为python官网的服务器在国外,我们可以通过腾讯软件中心下载https://pc.qq.com/search.html#!keyword=python 腾讯软件中心下载请使用普通下载,其他什么下载会自动帮你下个电脑管家(没必要) python简单描述 python…...

CHAPTER 5 自动发现、自动注册、分布式监控、SNMP监控

自动发现与自动注册5.1 自动发现与自动注册5.1.1 简介5.1.2 两种模式5.2 自动发现--被动模式5.3 自动注册--主动模式5.4 分布式监控5.4.1 介绍5.4.2 配置zabbix proxy5.5 SNMP监控5.5.1 使用范围5.5.2 安装snmp程序5.5.3 配置snmp程序5.5.4 测试snmp5.5.5 在web界面进行配置5.1…...

P5311 [Ynoi2011] 成都七中

题目描述 给你一棵 nnn 个节点的树&#xff0c;每个节点有一种颜色&#xff0c;有 mmm 次查询操作。 查询操作给定参数 lrxl\ r\ xl r x&#xff0c;需输出&#xff1a; 将树中编号在 [l,r][l,r][l,r] 内的所有节点保留&#xff0c;xxx 所在连通块中颜色种类数。 每次查询操…...

Python 日期和时间格式

Python 程序能用很多方式处理日期和时间&#xff0c;转换日期格式是一个常见的功能。Python 提供了一个 time 和 calendar 模块可以用于格式化日期和时间。时间间隔是以秒为单位的浮点小数。每个时间戳都以自从1970年1月1日午夜&#xff08;历元&#xff09;经过了多长时间来表…...

电脑和手机的软件推荐

安卓软件 jota text 记事本 x浏览器 &#xff08;支持禁js&#xff0c;支持嗅探 视频 音频&#xff09; __ 空缺 暂未能发现好用的office软件 snapseed图片调整 可谓手机界的photoshop vidtrim视频剪辑 librera reader &#xff08;无广告 电子书软件 但是发音很差 lithum或者…...

酸回收树脂的应用

酸洗废水 在轧钢、金属表面处理、电子元件制造等过程中需要清除钢材表面氧化铁皮而使用酸进行酸洗&#xff0c;酸洗过程中会产生废酸液和酸洗废水。 这些废酸产量大、酸度高&#xff0c;而且由于酸洗废水来自钢铁和金属表面处理的清洗水&#xff0c;水中含有多种重金属离子&am…...

windows上配置IIS全过程

文章目录1️⃣ 配置IIS1.1 从开始打开服务器管理1.2 添加角色和功能1.3 添加角色和功能向导1.4 按照如下步骤选择2️⃣ 问题&#xff1a;缺少源文件解决方案优质资源分享作者&#xff1a;xcLeigh 文章地址&#xff1a;https://blog.csdn.net/weixin_43151418/article/details/1…...

软考高级信息系统项目管理师系列之十三:项目成本管理

软考高级信息系统项目管理师系列之十三:项目成本管理 一、成本管理领域输入、输出、工具和技术表二、成本管理基础知识点1.成本类型2.应急储备和管理储备3.成本基准三、项目成本管理过程1.项目成本管理的过程2.成本管理计划3.项目成本估算的主要步骤4.活动成本估算5.项目预算6…...

HIVE 基础(一)

目录 启动hive 方式一 方式二 修改hdfs上给定文件执行的读写权限 创建数据库 查看数据库 查看数据库详细信息 查看当前数据库 创建表 查看建表语句 查看表信息 删除表 添加数据 查看表数据 删除数据库 强制删除数据库 启动hive 方式一 [roothadoop1 ~]# hive 方…...

《狂飙》壁纸太帅,Python自动切换太酷(8)

小朋友们好&#xff0c;大朋友们好&#xff01;我是猫妹&#xff01;要说最近什么电视剧最火&#xff1f;非《狂飙》莫属。《狂飙》剧名来自毛主席诗词“国际悲歌歌一曲&#xff0c;狂飙为我从天落”。导演借用“狂飙”二字来比喻剧中的扫黑除恶大风暴。据了解&#xff0c;《狂…...

博客排名的影响是什么? 说明优点、注册方法和推荐网站

如果您经营博客&#xff0c;您是否在博客排名网站上注册&#xff1f;博客排名网站是以排名格式介绍各种注册博客的网站。如果您注册博客&#xff0c;您将有更多机会被人们看到&#xff0c;并且可以期望增加访问权限。对于那些刚刚打开博客并担心访问量不会轻易增加的人来说&…...

全流程GMS地下水数值模拟技能培养及溶质运移反应问题深度解析实践技术

本次综合前期多次学习的效果及重点关注环节&#xff0c;系统性呈现地下水数值模拟软件GMS建模方法同时&#xff0c;建立与实践项目过程中的重点问题相融合&#xff0c;在教学中不仅强调学习三维地质结构建模、水文地质模型概化、边界条件设定、参数反演和模型校核等关键环节&am…...

【软件架构设计】SOA/软件架构设计---面向服务的架构(SOA详细解释)

文章目录面向服务的架构SOA 概述1. 服务的基本结构2.SOA 设计原则3. 服务构件与传统构件SOA 的关键技术1. UDDI2.WSDL3.SOAP4.RESTSOA 的实现方法1.Web Service2. 服务注册表3. 企业服务总线微服务1.微服务的优势2. 微服务面临的挑战3.微服务与 SOA面向服务的架构 迄今为止&am…...

erupt框架Ueditor富文本编辑器图片上传出现405异常

最近在研究erupt框架(v1.11.2),当字段使用Ueditor富文本编辑器,在图片上传的时候出现405异常,接口不支持POST请求方式: 根据错误提示找到对应的源码,发现Handler方法只支持GET请求,而图片上传的时候是以POST方式发起请求的; 此时需要修改源码,用自定义的类覆盖jar包中同名的…...

FILE文件操作

文件指针 每个被使用的文件都在内存中开辟了一个相应的文件信息区&#xff0c;用来存放文件的相关信息&#xff08;如文件的名 字&#xff0c;文件状态及文件当前的位置等&#xff09;。这些信息是保存在一个结构体变量中的。该结构体类型是有系统 声明的&#xff0c;取名FILE…...

SAP PP工单确认完成(CNF)状态取消方法

这SAP PP工单确认完成&#xff08;CNF&#xff09;状态取消方法SAP PP工单确认完成&#xff08;CNF&#xff09;状态取消方法SAP PP工单确认完成&#xff08;CNF&#xff09;状态取消方法 工单完工后取消了其中的一个报工&#xff0c;然后无法再报工 此时再报工&#xff0c;系…...

Python 采集 筷 实现视频批量保存

前言 嗨喽~大家好呀&#xff0c;这里是魔王呐 ❤ ~! 刷到的视频怕它下架&#xff1f;我们来采集保存一下它 知识点: 动态数据抓包 requests发送请求 json数据解析 开发环境: python 3.8 运行代码 pycharm 2022.3 辅助敲代码 requests pip install requests 代码展示 需…...

关于linux下环境配置遇到的坑

1、输入终端命令和vi时&#xff0c;一定要确认是英文输入法&#xff01; 比如中英文输入下的短杠号“-”是不同的&#xff0c;虽然看起来一样。如果是中文输入法下输入含有短杠号的命令&#xff0c;会导致很多意料之外的错误。比如在用sudo ln -s 创建软连接时&#xff0c;会提…...

【Azure 架构师学习笔记】-Azure Logic Apps(7)- 自定义Logic Apps 调度

本文属于【Azure 架构师学习笔记】系列。 本文属于【Azure Logic Apps】系列。 接上文【Azure 架构师学习笔记】-Azure Logic Apps&#xff08;6&#xff09;- Logic Apps调用ADF 前言 在稍微了解Logic Apps的使用之后&#xff0c;需要开始考虑如何调度起来。在Logic Apps里面…...

个人网站开发需求分析/简述企业网站如何推广

今天接着上次说的远程线程注入来说下利用远程线程进行dll注入。 远程线程注入需要目标进程地址空间的某个函数作为线程的thread_func, 这样我们只能用目标进程中自定义的函数&#xff0c;那我们怎么样使用自定义的函数呢&#xff0c;这就需要使用DLL注入技术。 DLL注入原理很简…...

做网站找那些公司/常见的网络推广方法有哪些

前言 学习groovy的目的最终是为了更好的使用gradle&#xff0c;前面已经对groovy进行了一些列的学习&#xff0c;接下来开始gradle的学习。 一、Gradle的执行流程 1、Initialization初始化阶段 解析整个工程中的所有project&#xff0c;构建所有的Project对应的project对象…...

天津培训网站建设/项目推广渠道有哪些

visionpro简单易用您可以使用jQuery样式表切换器使网站更具交互性-允许访问者从其他样式表列表中选择首选的配色方案&#xff0c;从而使他们的浏览体验更加个性化。 本文包含10个简单的jQuery StyleSheet切换器集合&#xff0c;供您尝试并实现到您的网站中。 请享用。 相关文章…...

网站建设费属于文化事业建设费/百度热搜榜排名今日头条

转载&#xff1a;http://ling0322.info/2014/04/08/introduction-to-keyphrase-extraction.html 关键词提取就是从文本里面把跟这篇文章意义最相关的一些词抽取出来。这个可以追溯到文献检索初期&#xff0c;当时还不支持全文搜索的时候&#xff0c;关键词就可以作为搜索这篇论…...

网站推广方法有/seo自然排名优化

为什么80%的码农都做不了架构师&#xff1f;>>> 如今&#xff0c;软件通常会作为一种服务来交付&#xff0c;它们被称为网络应用程序&#xff0c;或“软件即服务”&#xff08;SaaS&#xff09;。 “十二要素应用程序”&#xff08;12-Factor App&#xff09;为构建…...

用于制作网页的工具软件/专业关键词优化平台

问题简介 我写爬虫&#xff0c;用到了asyncio相关的事件循环&#xff0c;新建了一个线程去run_forever()&#xff0c;在docker中运行。后来程序有异常&#xff0c;主线程挂了&#xff0c;但是竟然不报错。查了很久&#xff0c;才找出来。 如果你新建一个线程去运行一般的死循环…...