(JAVA)-(网络编程)-UDP协议

在上上文章中我们简单了解了UDP通信协议和TCP协议。这篇文章 来讲解java中如何使用UDP协议发送数据。

UDP通信协议发送数据:

而使用UDP通信协议发送数据也可以看成是寄快递的过程。

在寄快递的过程中,我们首先得找快递公司,接着得打包好礼物,然后让快递公司发送包裹,最后付钱走人。

1.首先我们得找快递公司:创建发送端的DatagramSocket 对象

DatagramSocket ds=new DatagramSocket();

细节:创建DatagramSocket对象时可以绑定端口号,如果用空参构造的话,就会从可用的端口号中随机选一个进行绑定。我们就是通过这个端口往外发送数据的。

2.打包礼物:数据打包(datagramPacket)

String str="邓子诩子"//要打包的数据
byte [] bytes=str.getBytes();//将字符串进行编码
int port=10086;
InetAddress address=InetAddress.getByName("127.0.0.1");
DatagramPacket dp=new DatagramPacket(bytes,bytes.length, address,port)//打包数据

表示要将bytes字节数据长度为bytes.length长度的数据发送至address地址的port端口。

3.快递公司发送包裹:发送数据

ds.send(dp);

4.付钱走人:释放资源

ds.close();

UDP通信协议接收数据:

使用UDP通信协议接收数据可以看成是拿快递的过程。

拿快递首先我们得找快递公司,然后接收箱子,接着从箱子中获取礼物,最后签收走人

1.找快递公司:创建接收端的DatagramSocket对象

细节:在接收时候一定要绑定端口号,绑定的端口号要跟发送的端口保持一致

DatagramSocket ds=new DatagramSocket(10086);

2.拿到快递包:接收数据包

细节:receive方法是阻塞的,会一直等到接收到数据再结束此方法

byte[] bytes=new byte[1024];
DatagramPacket dp=new DatagramPacket(bytes,byte.length);
ds.receive(dp);

我们创建了一个bytes数组用来接收数据包,使用该数组的byte.length长度的字节来接收数据。

3.从箱子中获取礼物:解析数据包

byte data=dp.getDate();//获取数据数组
int length=dp.getLength();//获取字节数据的长度
int port=dp.getPort();//获取发送端的端口
dp.getAddress();//获取发送端的ip

4.签收走人:释放资源

ds.close()

 UDP的三种通信方式:

1.单播:一台机器和一台机器通信这是单播。像我们上面写的代码都是单播

2.组播:一台机器给一组机器发送消息就是组播。

组播地址:224.0.0.0-224.0.0.25  ,其中224.0.0.0-224.0.0.255是预留的我们能使用的组播地址

组播代码跟上面的单播代码差不多,需要注意的点:

1.创建Socket对象时创建的是MulticaseSocket对象

MulticastSocket ms=new MulticastSocket();

1.发送端要发送的ip地址要写组播地址 

2.接收端要使用Socket类中的joinGroup方法把当前主机添加到组播的组中。

InetAddress address=InetAddress.getByName("224.0.0.1");
ms.joinGroup(address);

3.广播:能给局域网中所有的ip发送数据。

需要注意:发送端要发送的ip地址要写广播地址:255.255.255.255。

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

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

相关文章

【兔子王赠书第14期】《YOLO目标检测》涵盖众多目标检测框架,附赠源代码和全书彩图!

文章目录 写在前面YOLO目标检测推荐图书本书特色内容简介作者简介 推荐理由粉丝福利写在后面 写在前面 小伙伴们好久不见吖,本期博主给大家推荐一本关于YOLO目标检测的图书,该书侧重目标检测的基础知识,包含丰富的实践内容,是目标…

《数据结构、算法与应用C++语言描述》- 平衡搜索树 -全网唯一完整详细实现插入和删除操作的模板类

平衡搜索树 完整可编译运行代码见:Github::Data-Structures-Algorithms-and-Applications/_34Balanced search tree 概述 本章会讲AVL、红-黑树、分裂树、B-树。 平衡搜索树的应用? AVL 和红-黑树和分裂树适合内部存储的应用。 B-树适合外部存储的…

气象预报与计算机技术:深度融合与未来展望

气象预报与计算机技术:深度融合与未来展望 一、引言 气象预报,作为人类对自然界气象变化的探索与预测,随着时间的推移和技术的进步,已经逐渐从单纯的经验模式转变为依赖于精密的仪器与强大的计算机技术的科学预测。在本文中,我们将深入探讨气象预报与计算机技术之间的密…

UCi数据集处理技巧记录

如何起步使用UCI数据集 这里记录一下如何把带分号的数据变成经常使用的csv形式。这里使用wine的例子 https://archive.ics.uci.edu/dataset/186/winequality 原始数据 Wine UCI数据操作 这种带分号的使用python的不好阅读,可以尝试以下步骤: 转变为t…

7.11全排列(LC46-M)

算法: 排列和组合很像,但是有顺序。 还是用回溯算法。 与组合不同之处(无startindex,有used数组): 首先排列是有序的,也就是说 [1,2] 和 [2,1] 是两个集合。 可以看出元素1在[1,2]中已经使…

Vue.js和Node.js的关系--类比Java系列

首先我们看一张图 这里我们类比了Java的jvm和JavaScript的node.js。 可以看到,node.js是基础,提供了基础的编译执行的能力。vue,js是实际上定义了一种他自己的代码格式,以加速开发。

Linux学习笔记(一)

如果有自己的物理服务器请先查看这篇文章 文章目录 网卡配置Linux基础指令ls:列出目录内容cd(mkdir.rmkdir): 切换文件夹(创建,删除操作)cp:复制文件或目录mv:文件/文件夹移动cat:查看文件vi:文件查看编辑man:查看命令手册more: 查看文件内容less : 查看文件内容 ps: 显示当前进…

简单Diff算法

简单Diff算法 渲染器的核心 Diff算法 解决的问题 比较新旧虚拟节点的子节点,实现最小化更新。 虚拟节点key属性的作用 就像虚拟节点的“身份证号”,在更新时,渲染器会通过key属性找到可复用的节点,然后尽可能地通过DOM移动操…

26、web攻防——通用漏洞SQL注入SqlmapOracleMongodbDB2

文章目录 OracleMongoDBsqlmap SQL注入课程体系; 数据库注入:access、mysql、mssql、oracle、mongodb、postgresql等数据类型注入:数字型、字符型、搜索型、加密型(base63 json)等提交方式注入:get、post、…

Javaweb-servlet

一、servlet入门 1.Servlet介绍 (1)什么是Servlet Servlet是Server Applet的简称,是用Java编写的是运行在 Web 服务器上的程序,它是作为来自 Web 浏览器或其他 HTTP 客户端的请求和 HTTP 服务器上的数据库或应用程序之间的中间层。使用 Servlet&#…

【Unity动画系统】Animator有限状态机参数详解

👨‍💻个人主页:元宇宙-秩沅 👨‍💻 hallo 欢迎 点赞👍 收藏⭐ 留言📝 加关注✅! 👨‍💻 本文由 秩沅 原创 👨‍💻 收录于专栏:Uni…

【DevOps 工具链】搭建 项目管理软件 禅道

文章目录 1、简介2、环境要求3、搭建部署环境3.1. 安装Apache服务3.2. 安装PHP环境(以php7.0为例 )3.3. 安装MySQL服务 4、搭建禅道4.1、下载解压4.2、 配置4.2.1、 启动4.2.2、自启动4.2.3、确认是否开机启动 5、成功安装 1、简介 禅道是国产开源项目管…

Java基础语法(注释,关键字,字面量,变量,数据类型,标识符,键盘录入,IDEA安装,类,模块,项目)

文章目录 day02 - Java基础语法1. 注释使用的技巧注意点 2. 关键字2.1 概念2.2 第一个关键字class 3. 字面量区分技巧 4. 变量4.1 什么是变量?4.2 变量的定义格式4.2.1 格式详解4.2.2 常用的数据类型4.2.3 变量的注意事项 4.3 变量的练习 5. 数据类型5.1 Java语言数…

机器学习作业--PCA

目录 特征约减: 为什么进行特征约减? 怎么获得更具有代表性的数据? 怎么找到主成分,满足上述条件? 代码: 学习资料:PCA算法 - 知乎 (zhihu.com) 特征约减: 将高维的特征向量X…

【Qt之Quick模块】6. QML语法详解_3 QML对象特性

概述 每一个QML对象类型都包含一组已定义的特性。当进行实例时都会包含一组特性,这些特性是在对象类型中定义的。 一个QML文档中的对象类型声明了一个新的类型,即实例出一个类型。 其中包含以下特性。 the id attribute : id特性property a…

vmware部署docker+springboot+MySQL(超详细)

一、前期准备 (一)安装jdk #docker search openjdk #docker pull openjdk:8 (二)确认网络 如果局域网其他终端(如手机访问),虚拟机网络连接需要选择《桥接》模式,而且,需要使用有线连接,不能使用Wi-Fi,切忌切忌! 并且要选择实际的那个有线连接。比如我这里是“R…

初始SpringBoot:详解特性和结构

🏡浩泽学编程:个人主页 🔥 推荐专栏:《深入浅出SpringBoot》《java项目分享》 《RabbitMQ》《Spring》《SpringMVC》 🛸学无止境,不骄不躁,知行合一 文章目录 前言一、SpringBoot…

数据结构,题目笔记

哈希表 线性探测再散列 【算法数据结构|哈希查找|哈希冲突|除留余数法|线形探测法|例题讲解】https://www.bilibili.com/video/BV1514y1P7BK?vd_source1a684a3a1b9d05485b3d6277aeeb705d 【二次探测再散列法】 【【…

安防视频监控系统EasyCVR实现H.265视频在3秒内起播的注意事项

可视化云监控平台/安防视频监控系统EasyCVR视频综合管理平台,采用了开放式的网络结构,可以提供实时远程视频监控、视频录像、录像回放与存储、告警、语音对讲、云台控制、平台级联、磁盘阵列存储、视频集中存储、云存储等丰富的视频能力,同时…

Hadoop安装笔记2单机/伪分布式配置_Hadoop3.1.3——备赛笔记——2024全国职业院校技能大赛“大数据应用开发”赛项——任务2:离线数据处理

紧接着上一篇博客:Hadoop安装笔记1: Hadoop安装笔记1单机/伪分布式配置_Hadoop3.1.3——备赛笔记——2024全国职业院校技能大赛“大数据应用开发”赛项——任务2:离线数据处理-CSDN博客https://blog.csdn.net/Zhiyilang/article/details/135…