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

UDP和TCP特点(部分)对比:

传输层的两个主要协议:TCP 和 UDP

UDP和TCP特点(部分)对比:

UDP:无连接, 不可靠传输, 面向数据报, 全双工。

TCP:有连接, 可靠传输, 面向字节流, 全双工。

UDP 和 TCP 有着两套不同的api, 操作系统给程序用于网络编程的api又起了另外的名字提叫:socket api。

        有连接就如打电话,不仅需要打电话的人来拨号,也需要接电话的人来同意,这个过程就是建立连接。而无连接就如发短信,只需要知道对方的号码,就可以直接发短信,不需要对方的同意。

        可靠传输与不可靠传输的可靠不是指A给B的信息能100%的到达,而是指A尽可能的把信息传给B,并且在传输过程中,A能感觉到是否传输成功,而TCP能感觉的到,UDP不行,虽然TCP是可靠传输,但这也因此导致传输效率降低了,而UDP的传输效率更高。可靠传输与不可靠传输并不是判断网络安全的标准之一,因此不能说TCP一定比UDP更安全。

        TCP和文件操作类似,都是流式的,如水一样,可以一次取几十毫升,也可分几十次取一毫升,凭自己的想法决定,TCP传递消息也是如此,因此TCP是面向字节流,而UDP则不同,它是面向数据报的,它的读写的基本单位是一个UDP数据报,因此,它只能一次传输一个UDP数据报,而不能一次传输多个数据报或者半个数据报之类的。

        全双工指的是一个通道,可以双向通信,就如在同一个通道里,A给B发信息时,B也能给A发信息,同时还有半双工,它指的是一个通道,只能单向通信。

UDP的socket api

两个核心类:

1)DatagramSocket

是一个Socket对象,操作系统使用文件的概率来管理一些软硬件资源,同样的,操作系统也使用文件的方式来表示网卡的,表示网卡的这类文件,称为Socket文件,JAVA中的Socket对象,就对应这系统里的Socket文件(最终还是得落在网卡上)。因此要进行网络对象,就必须得有Socket对象,然后通过网卡进行网络通信。

DatagramSocket类有两个构造方法,一个带端口号的(在服务器这边使用,端口号手动指定),一个不带端口号(在客户端使用,系统自动分配),为什么这么设置呢?如开餐厅,每次客人来吃时,只需要找到餐厅位置,但餐厅所处位置这有许多餐厅,要想与其他餐厅区分开来,就需要有一个与其他餐厅不同的名字,而这个名字就相当于服务器端口号,倘若这个名字会随着时间改变,那么如果有回头客时,就会找不到原来的餐厅,因为餐厅名发生改变,因此服务器的端口号是不能随意改变的,而顾客来餐厅吃时,也不是每次都在一个地方,而是哪有位置去哪,这个就是有系统自动分配的端口号,倘若手动指定位置,有可能该端口号已被占用,就无法进行交互,因此由系统自动分配是比较适合,所以,客户端的DatagramSocket类不带端口的。

除此之外,还提供了其他的方法:

void  receive(DatagramPacket p): 从此套接字接收数据报(如果没有接收到数据报,该方法会阻
塞等待)
void send(DatagramPacket p):从此套接字发送数据报包(不会阻塞等待,直接发送)
void close() :关闭此数据报套接字

2)  DatagramPacket

表示了一个UDP数据报,代表了系统中设定的UDP数据报的二进制结构。同样也有两个构造方法:

DatagramPacket(byte[] buf, int length): 构造一个 DatagramPacket 以用来接收数据报,接收的数据保存在 字节数组(第一个参数 buf )中,接收指定长度(第二个参数 length

DatagramPacket(byte[] buf, int offset, int length, SocketAddress address): 构造一个 DatagramPacket 以用来发送数据报,发送的数据为字节 数组(第一个参数 buf )中,从 0 到指定长度(第二个参数 length )。 address 指定目的主机的 IP 和端口号
除此之外,还有这其他方法:

       

TCP的socket api

两个核心类:

1)ServerSocket

给服务器使用的Socket

ServerSocket中会有一个“管理连接”的队列,当客户端和服务器尝试建立连接的时候,服务器就会和客户端进行一系列的数据交互,这个过程就称为握手,这个过程完了后,连接就建立好了,这个时候管理连接的队列里就会有这个连接元素,每有一个客户端与服务器建立连接,就会往这个队列添加一个元素。

2)Socket

服务器和客户端都要使用。

        

InetAddress getInetAddress()         返回套接字所连接的地址
InputStream getInputStream()         返回此套接字的输入流
OutputStream getOutputStream()         返回此套接字的输出流

相关文章:

UDP和TCP特点(部分)对比:

传输层的两个主要协议:TCP 和 UDP UDP和TCP特点(部分)对比: UDP:无连接, 不可靠传输, 面向数据报, 全双工。 TCP:有连接, 可靠传输, 面向字节流…...

PostMan环境变量、全局变量、动态参数使用

一、环境准备 postmanmoco [{"description": "登录认证","request": {"uri": "/login","method": "post","forms": {"user": "admin","password": "a123…...

服务器数据恢复-服务器硬盘指示灯黄灯闪烁的数据恢复案例

服务器数据恢复环境: 服务器面板上的硬盘指示灯显示黄色是一种警告,提示指示灯对应的服务器硬盘已经被服务器识别出存在故障,硬盘即将下线。如果出现这种情况,建议服务器管理员/运维人员及时用完好的硬盘替换显示黄色指示灯对应的…...

ts 分发

在 TypeScript 中,"分发"(distributive)是指在条件类型中的联合类型上自动进行类型推断的机制。当使用条件类型操作联合类型时,TypeScript 会自动将联合类型中的每个成员都应用该条件类型。 下面是一个示例&#xff1a…...

SQL中的group by使用注意事项

在 SQL 中,GROUP BY 语句用于将查询结果按照指定的列进行分组,并对每个分组计算聚合函数(如 SUM、AVG、COUNT 等)的值。一般情况下,如果查询中包含聚合函数,那么就需要使用 GROUP BY 语句将查询结果按照指定…...

矩阵剪辑系统源码----pc/手机端双开发

剪辑系统,剪辑矩阵系统,剪辑矩阵系统主要是针对抖音、快手、bili平台的一个工具,今天就来给大家交流一下这 个产品的主要功能以及构成。剪辑矩阵系统,矩阵剪辑系统源码-这产品主要功能就是一个视频剪辑功能,这个视频剪…...

0基础学习VR全景平台篇 第106篇:认识调色软件Lightroom

上课!全体起立~ 大家好,欢迎观看蛙色官方系列全景摄影课程! 正式开讲之前需要先引出一个概念:到底什么是调色? 比如说上面这张照片,你可能会具体的指出照片中的元素有天空、山脉、草地等…… 如果我们跳出我们的固…...

React如何优化减少组件间的重新Render

目前写了不少React的项目,发现React有些特点更灵活和注重细节,很多东西需要有一定的内功才能掌握好;比如在项目中常常遇到的组件重复渲染,有时候组件重复渲染如果内容是纯文本,不打印日志就不容易发现重复渲染了&#…...

mysql面试题44:MySQL数据库cpu飙升的话,要怎么处理?

该文章专注于面试,面试只要回答关键点即可,不需要对框架有非常深入的回答,如果你想应付面试,是足够了,抓住关键点 面试官:MySQL数据库cpu飙升的话,要怎么处理呢? 当MySQL数据库的CPU使用率飙升时,可能表示数据库负载过重或存在性能问题。以下是处理MySQL数据库CPU飙…...

动画圆圈文字标志效果

效果展示 CSS 知识点 实现圆圈文字animation 属性回顾 实现思路 从效果的实现思路很简单,其实就是两个圆圈就可以实现。外层大圆(灰色)用于圆圈文字的展示,而内圆(藏青色)主要用于存放 Logo 图片。布局采…...

【数据结构】二叉树--顺序结构及实现 (堆)

目录 一 二叉树的顺序结构 二 堆的概念及结构 三 堆的实现 1 包含所有接口 (Heap.h) 2 初始化,销毁和交换(Heap.c) 3 向上调整(Heap.c) 4 插入(Heap.c) ​5 向下调整(Heap.c) 6 删除(Heap.c) ​7 打印&#…...

适用于嵌入式单片机的差分升级通用库

转至:痞子衡嵌入式半月刊:第 81 期 1、mcu_bsdiff_upgrade - 适用于嵌入式单片机的差分升级通用库 mcu_bsdiff_upgrade 是一款适用于嵌入式单片机的差分升级库,通用所有单片机,如stm32、华大、复旦微、瑞萨等。适合嵌入式的差分升…...

Exposure Normalization and Compensation for Multiple-Exposure Correction 论文阅读笔记

这是CVPR2022的一篇曝光校正的文章,是中科大的。一作作者按同样的思路(现有方法加一个自己设计的即插即用模块以提高性能的思路)在CVPR2023也发了一篇文章,名字是Learning Sample Relationship for Exposure Correction。 文章的…...

Arduino驱动BMI160 6轴惯性运动传感器(惯性测量传感器篇)

目录 1、传感器特性 2、硬件原理图 3、控制器和传感器连线图 4、驱动程序...

数据挖掘实战(3):如何对比特币走势进行预测?

⭐️⭐️⭐️⭐️⭐️欢迎来到我的博客⭐️⭐️⭐️⭐️⭐️ 🐴作者:秋无之地 🐴简介:CSDN爬虫、后端、大数据领域创作者。目前从事python爬虫、后端和大数据等相关工作,主要擅长领域有:爬虫、后端、大数据…...

巴以冲突中暴露的摄像头正对安全构成威胁

巴以冲突爆发后,许多配置不当的安全摄像头正暴露给黑客活动分子,使其周遭人员面临巨大安全风险。 Cyber​​news 研究人员发现,在以色列至少有165 个暴露的联网 RTSP 摄像头,在巴勒斯坦有 29 个暴露的 RTSP 摄像头。在巴勒斯坦&am…...

【Redis】Redis性能优化:理解与使用Redis Pipeline

原创不易,注重版权。转载请注明原作者和原文链接 文章目录 Pipeline介绍原生批命令(MSET, MGET) VS PipelinePipeline的优缺点一些疑问Pipeline代码实现 当我们谈论Redis数据处理和存储的优化方法时,「 Redis Pipeline」无疑是一个不能忽视的重要技术。…...

前端全局工具函数utils.js/正则(持续更新)

1. 接口返回提示 // 接口返回提示requestCodeTips(code, msg) {// code错误码,msg提示信息let errorrMessage switch (Number(code)) {case 400:errorrMessage 错误请求break;case 401:errorrMessage 未授权,请重新登录break;case 403:errorrMessage 拒绝访问b…...

如何基于先进视频技术,构建互联网视频监控安全管理平台解决方案

一、建设思路 依托互联网,建设一朵云,实现各类二三类视频资源统一接入,实现天网最后100米、10米、1米的全域覆盖。 依托人工智能与互联网技术,拓展视频资源在政府、社会面等多领域的全面应用;建设与运营模式并存&…...

【React native】navigation 状态重置

reset The reset action allows to reset the navigation state to the given state. It takes the following arguments: 重置操作允许将导航状态重置为给定状态: navigation.reset({index: 1,routes: [{name: Home}],});参考链接: 官方文档 https://reactnavigat…...

2023全国大学生软件测试大赛开发者测试练习题99分答案(ScapegoatTree2023)

2023全国大学生软件测试大赛开发者测试练习题99分答案(ScapegoatTree2023) 题目详情题解代码(直接全部复制到test类中即可)提示:该题只需要分支覆盖得分即可,不需要变异得分 题目详情 题解代码(直接全部复制到test类中即可) package net.mooctest;import static org.…...

Centos8 openjdk升级

1、卸载旧版本 sudo dnf remove java-1.8.0-openjdk 2、搜索新版本 yum search java-11-openjdk3、安装新版本 dnf install java-11-openjdk.x86_644、验证新版本 java -version...

开启深度学习之门—《深度学习》

开启深度学习之门—《深度学习》 《深度学习》由Ian Goodfellow和Yoshua Bengio合著,以其前沿的内容和深入浅出的风格,成为了当今最受欢迎的人工智能教材之一。首先,让我们来了解一下这两位作者。Ian Goodfellow是一位备受瞩目的计算机科学家…...

优先调节阀位,条件调节阀位

控制对象的执行机构可能存在多个,举例,压力通过变频和翻板这两个执行机构调节。默认调节翻板。这里定义一个全局布尔变量 bfgflag 初始默认为0;优先调节翻板,当翻板处于极限阀位时,bfgflag 赋值为1,开始调节…...

oracle入门笔记六

一、索引(index) 1、索引的作用 索引是优化查询的一种,使得查询效率特别高,索引是优化存储,索引作用在字段上 2、什么样的字段适合建索引 a、经常被查询的字段 b、不能为空,不能重复 c、字段的值不会被经常…...

腾讯云优惠券种类、领取方法及使用教程分享

腾讯云是国内领先的云计算服务提供商,为用户提供丰富的云计算产品和服务。为了吸引更多用户使用腾讯云的产品和服务,腾讯云会定期推出各种优惠券活动。本文将为大家介绍腾讯云优惠券的种类、领取方法及使用教程。 一、腾讯云优惠券种类介绍 腾讯云优惠券…...

JavaScript使用类-模态窗口

**上节课我们为这个项目获取了一些DOM元素,现在我们可以继续;**这个模态窗口有一个hidden类,这个类上文我们讲了,他的display为none;如果我们去除这个hidden的话,就可以让这个模态窗口展现出来。如下 cons…...

【轻松玩转MacOS】外部设备篇

引言 在开始之前,我们先来了解一下为什么要连接外部设备。想象一下,你正在享受MacOS带来的便捷和高效,突然需要打印一份文件,但你发现打印机无法连接;或者你需要将手机投屏到电脑上,却不知道该如何操作。这…...

location rewrite

Nginx location 匹配的规则和优先级 Nginx常用的变量 rewrite: 重定向功能 Location 匹配 URI URI:统一资源的表示符,是一种字符串标识,用于标识抽象或者物理资源 先来巩固一些与location结合使用的正则表达式 正则表达式:匹…...

XLSX.utils.sheet_to_json()解析excel,给空的单元格赋值为空字符串

前言 今天用到XLSX来解析excel文件,调用XLSX.utils.sheet_to_json(worksheet),发现如果单元格为空的话,解析出来的结果,就会缺少相应的key(如图所示)。但是我想要单元格为空的话,值就默认给空字…...