news 2026/4/23 16:12:53

TCP和UDP的区别

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
TCP和UDP的区别

UDP和TCP的区别

都是在传输层工作的

UDP:无连接,不可靠传输,全双工,传输效率高,读写基本单位是数据报

TCP:有连接,可靠传输,全双工,传输效率高,读写基本单位是字节流

UDP是无连接的意思是他不会记录是谁和他连接,这个连接是抽象虚拟的,传输是不可靠传输,意思是UDP只管传不管怎么样,传了,到不到就不管我事了,传输效率肯定高的很,毕竟不管送没送到,只管送没送,全双工的意思是可以进行读写,半双工就是只能选择一个

TCP有连接的意思是他会记录下来这个时候对方是谁,在和谁进行通讯,可靠传输就是指,他会尽量的把数据完好无损的送到目的地,全双工,可以进行读写,传输效率肯定是要低一些的,毕竟都送完好无损的还要求速度,说不过去了

不管是那种协议,都是无法直接操作网卡的,要借助一个代理人来操作datagramsocket(UDP),serversocket(TCP)

UDP

UDP服务器

  1. 创建一个空的datagramsocket类型的变量socket,然后在构造方法的时候,初始化并指定一个端口来进行操作网卡

  1. Start方法,这里是服务器处理的核心分为三步
  1. 创建一个datagrampacket,使用这个来存储载荷,然后使用socket.receive方法去不断的读取,因为读到的是字节,所以需要使用string把他转成字符串类型的,方便之后的处理

  1. 计算响应

  1. 创建一个新的datagrampacket包,使用这个来返回响应值,这里需要注意的点就是要把你计算出来的响应转成字节的形式才能在网络上传播,并且要指定去的地方,不然就不知道送到哪里去了

  1. 最后打印日志就行

UDP客户端

因为UDP是无连接的,所以在一开始的时候就要创建好成员变量serverip和serverport来记录对方是谁,同时要找socket来和网卡进行操作然后在构造方法中初始化

Start方法

  1. 首先需要在控制台读取用户的输入

  1. 构建一个数据包datagrampacket来发送出去,在构造的时候,需要注意把输入的转成字节使用getbyte和getbyte.length最后需要传到哪里去ip(这个ip比较特殊,因为没有办法直接获取,所以需要使用inetadress.getbyname)和port都是需要写的。然后sent就行

  1. 接着也是需要构建一个datagrampacket包来接收服务器的响应,使用receive去接收就行

  1. 解析打印日志

TCP

TCP服务器

  1. 使用serversocket来和操作系统申请和网卡进行沟通,这个是服务器独特使用的

  1. 初始化的时候指定端口号

  1. Start方法中,因为tcp是有连接的,所以需要先处理有连接的问题,需要使用socket类型的来接收accept来接收连接,到这里serversocket的没有用,他的作用已经结束了,就是单纯的建立连接,接下来就是对socket这个类进行操作了

  1. Processconnect中,首先因为是tcp是面向字节流,所以要使用inputsream和outputstream来进行操作,使用try语法糖包裹,不用字节去释放文件,然后在内部也很简单,使用scanner和printwrite来套壳,这样就不用写很多繁杂的,接着使用scanner来读取输入,printwrite来返回响应就行,核心最关键的就是要刷新缓存区,不然还是没有发送出去的

TCP客户端

客户端中因为TCP是有连接的,所以不需要自己记录ip和端口号,只需要在构造方法中传入访问的服务器的ip和服务器的端口就可以

在start方法中

  1. 因为是字节流,所以也是要用inputstream和outputsream来进行操作,同时也要记得套壳scanner和printwrite,同时需要使用一个scanner来读取用户在控制台的输入

  1. 把用户的输入使用printwrite去发送,然后要记得刷新缓存区

  1. 最后记得使用scanner来读取服务器的返回值即可,再打印出来结束。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/22 23:37:08

基于springboot和vue框架的情绪宣泄评测平台的设计与实现_8w0i844u

目录具体实现截图项目介绍论文大纲核心代码部分展示项目运行指导结论源码获取详细视频演示 :文章底部获取博主联系方式!同行可合作具体实现截图 本系统(程序源码数据库调试部署讲解)同时还支持java、ThinkPHP、Node.js、Spring B…

作者头像 李华
网站建设 2026/4/23 14:37:53

基于springboot和vue框架的旅游攻略分享平台_0bv523sv

目录具体实现截图项目介绍论文大纲核心代码部分展示项目运行指导结论源码获取详细视频演示 :文章底部获取博主联系方式!同行可合作具体实现截图 本系统(程序源码数据库调试部署讲解)同时还支持java、ThinkPHP、Node.js、Spring B…

作者头像 李华
网站建设 2026/4/23 14:37:40

基于springboot和vue框架的流浪宠物领养平台_8pt61t0v

目录具体实现截图项目介绍论文大纲核心代码部分展示项目运行指导结论源码获取详细视频演示 :文章底部获取博主联系方式!同行可合作具体实现截图 本系统(程序源码数据库调试部署讲解)同时还支持java、ThinkPHP、Node.js、Spring B…

作者头像 李华
网站建设 2026/4/23 11:45:46

物流可信数据空间:破解行业痛点,激活数据要素新动能

货车空驶率居高不下、数据孤岛难以打破、敏感信息易泄露、融资渠道持续收窄……在数字经济深度融合实体经济的今天,物流行业手握海量运力、仓储、交易数据,却长期陷入“不敢用、不会用、用不好”的价值困局。破解这一困局的“金钥匙”,正是物…

作者头像 李华
网站建设 2026/4/23 11:46:19

Java 深度解析:从虚拟机到企业级开发的全面指南

Java 深度解析:从虚拟机到企业级开发的全面指南一、Java 语言体系与生态系统全景1.1 Java 发展历程与技术演进历史里程碑:1995年:Java 1.0 发布,提出 "Write Once, Run Anywhere" 理念1998年:Java 2 Platfor…

作者头像 李华
网站建设 2026/4/23 11:47:07

网络安全大赛全方位详解:从入门到夺冠之路

本文涵盖CTF、AWD、实网攻防等各类网络安全竞赛,为你提供完整参赛指南 目录 📊 一、网络安全大赛全景图 1.1 主流赛事分类 1.2 国内外顶级赛事盘点 🎯 二、CTF比赛全解析 2.1 常见题型与技能要求 2.2 CTF比赛技巧进阶 ⚔️ 三、AWD攻防…

作者头像 李华