(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。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

十八、任务通知

1、前言 (1)所谓“任务通知”,可以反过来读"通知任务"。我们使用队列、信号量、事件组等等方法时,并不知道对方是谁。使用任务通知时,可以明确指定:通知哪个任务。 (2)使用队列、信号量、事件组时,我们都需…

DrGraph原理示教 - OpenCV 4 功能 - 阈值

普通阈值 OpenCV中的阈值用于相对于提供的阈值分配像素值。在阈值处理中,将每个像素值与阈值进行比较,如果像素值小于阈值则设置为0,否则设置为最大值(一般为255)。 在OpenCV中,有多种阈值类型可供选择&am…

Python编程-面向对象基础与入门到实践一书的内容拓展

Python编程-面向对象基础与入门到实践一书的内容拓展 通过编程,模拟现实生活中的事物编程,叫做面向对象编程,此过程也叫做实例化编程 简单类的创建 class Test():def __init__ (self,id):self.id iddef print_id(self):print(self.id)这里建…

基于Java SSM框架实现房屋租赁合同系统项目【项目源码+论文说明】计算机毕业设计

基于java的SSM框架实现房屋租赁合同系统演示 摘要 在网络高速发展的时代,众多的软件被开发出来,给用户带来了很大的选择余地,而且人们越来越追求更个性的需求。在这种时代背景下,人们对房屋租赁系统越来越重视,更好的…

信创之国产浪潮电脑+统信UOS Linux操作系统体验10:visual studio code中调试C++程序

☞ ░ 前往老猿Python博客 ░ https://blog.csdn.net/LaoYuanPython 一、引言 老猿在CSDN的《信创之国产浪潮电脑统信UOS操作系统体验2:安装visual studio code和cmake搭建C开发环镜》介绍了在国产浪潮电脑统信UOS操作系统中安装visual studio code和cmake搭建C开…

数据结构期末复习(2)链表

链表 链表(Linked List)是一种常见的数据结构,用于存储一系列具有相同类型的元素。链表由节点(Node)组成,每个节点包含两部分:数据域(存储元素值)和指针域(指…

Portraiture4.1汉化版PS磨皮插件(支持原生m1芯片m2)

Portraiture汉化版PS磨皮插件。本期推荐一款全新ai算法ps2024中文汉化版ps磨皮插件Portraiture 4.1.2美颜滤镜安装包最新版ps调整肤色插件! 全新Portraiture 4.1.2版本PS人像修图美颜磨皮插件,升级AI算法,并支持多人及全身磨皮美化模式,推荐…

UG NX二次开发(C#)-Ufun和NXOpen混合编程

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 1、前言2、Ufun函数3、 NXOpen4、混合编程实现1、前言 在UG NX二次开发过程中,采用Ufun功能比较简单,能用比较少的代码实现我们需要的功能,但是ufun函数的功能不是很强大,尤其随着UG NX的版本…

【深度学习:LSTM Networks】了解 LSTM 网络

【深度学习:LSTM Networks】了解 LSTM 网络 循环神经网络长期依赖问题 相关知识传送门: LSTM 网络LSTM 背后的核心理念LSTM 分步演练长短期记忆的变体Conclusion 循环神经网络 人类在思考时并不是每时每刻都从头开始。当你阅读这篇文章时,你…

波特云 集装箱和 海恒蓝 集装箱 自动化集装箱下单方案

背景: 这几天 遇到了一个客户 是做外贸的 需要大量多的集装箱,了解后 他们是需要在平台上 下单集装箱 才有可能预约到集装箱使用,所以公司每天都需要都需要派个人 盯着电脑来 下单集装箱。 波特云 网站:https://www.eportyun.com…

Springboot配置http-Only

项目框架 jdk1.8、springboot2.5.10 情况一 项目中未使用(权限认证框架:Sa-Token) application.yml文件内增加配置 server.servlet.session.cookie.http-onlytrueserver.servlet.session.cookie.securetrue (此条配置建议也加上) 情况二…

Vue:Vue与VueComponent的关系图

1.一个重要的内置关系&#xff1a;VueComponent.prototype.proto Vue.prototype 2.为什么要有这个关系&#xff1a;让组件实例对象&#xff08;vc&#xff09;可以访问到 Vue原型上的属性、方法。 案例证明&#xff1a; <!DOCTYPE html> <html lang"en"&…

2024年【制冷与空调设备运行操作】考试及制冷与空调设备运行操作免费试题

题库来源&#xff1a;安全生产模拟考试一点通公众号小程序 2024年【制冷与空调设备运行操作】考试及制冷与空调设备运行操作免费试题&#xff0c;包含制冷与空调设备运行操作考试答案和解析及制冷与空调设备运行操作免费试题练习。安全生产模拟考试一点通结合国家制冷与空调设…

FA模板制作

1、链接克隆模板的制作 &#xff08;1&#xff09;安装一个全新的Windows 10&#xff0c;挂载并安装tools&#xff0c;关闭防火墙 &#xff08;2&#xff09;挂载FusionAccess_WindowsDestop_Install_6.5.1.iso后启用本地Administrator本地超管&#xff0c;切换为本地超管&am…

车牌识别系统设计与实现

车牌识别系统设计与实现 项目概述 本项目旨在设计和实现一套车牌识别系统&#xff0c;通过使用车牌字符数据集进行训练&#xff0c;应用OpenCV、CNN&#xff08;卷积神经网络&#xff09;和PyQt5技术&#xff0c;实现车牌图像的预处理、位置选定、定位、字符分割和最终的车牌…

微信小程序自定义步骤条效果

微信小程序自定义一个步骤条组件&#xff0c;自定义文字在下面&#xff0c;已完成和未完成和当前进度都不一样的样式&#xff0c;可点击上一步和下一步切换流程状态&#xff0c;效果如下。 这是视频效果&#xff1a; 前端实现步骤条效果 下面我们一步步实现编码&#xff0c;自定…

最新解决msvcr100.dll丢失的方法,多种解决方法详细解析

msvcr100.dll丢失会导致某些程序或游戏无法正常运行&#xff0c;msvcr100.dll是Microsoft Visual C 2010的运行时组件&#xff0c;它包含了许多C标准库的函数实现。这些函数在程序运行时被调用&#xff0c;用于处理各种任务&#xff0c;如字符串操作、数学计算、文件操作等。因…

fastApi 项目部署

方式一&#xff0c;Uvicorn部署 Run a Server Manually - Uvicorn - FastAPI 1&#xff0c;linux服务器安装 python>3.8 2&#xff0c;安装 uvicorn : pip install "uvicorn[standard]" 3&#xff0c;上传项目到服务器 main.py from typing imp…

计算机专业个人简历范文(8篇)

HR浏览一份简历也就25秒左右&#xff0c;如果你连「好简历」都没有&#xff0c;怎么能找到好工作呢&#xff1f; 如果你不懂得如何在简历上展示自己&#xff0c;或者觉得怎么改简历都不出彩&#xff0c;那请你一定仔细读完。 互联网运营个人简历范文> 男 22 本科 AI简历…

【深度学习:Recurrent Neural Networks】循环神经网络(RNN)的简要概述

【深度学习】循环神经网络&#xff08;RNN&#xff09;&#xff1a;连接过去与未来的桥梁 循环神经网络简介什么是循环神经网络 (RNN)&#xff1f;传统 RNN 的架构循环神经网络如何工作&#xff1f;常用激活函数RNN的优点和缺点RNN 的优点&#xff1a;RNN 的缺点&#xff1a; 循…