UDP通信-广播、组播
UDP的三种通信方式
单播:单台主机与单台主机之间的通信。
广播:当前主机与所在网络中的所有主机通信。
组播:当前主机与选定的一组主机的通信。
UDP如何实现广播
使用广播地址:255.255.255.255
具体操作:
发送端发送的数据包的目的地写的是广播地址、且指定端口。 (255.255.255.255 , 9999)
本机所在网段的其他主机的程序只要注册对应端口就可以收到消息了。(9999)
代码实现:
public class ClientDemo1 {public static void main(String[] args) throws Exception {System.out.println("=====客户端启动======");// 1、创建发送端对象:发送端自带默认的端口号(人)DatagramSocket socket = new DatagramSocket();Scanner sc = new Scanner(System.in);while (true) {System.out.println("请说:");String msg = sc.nextLine();if("exit".equals(msg)){System.out.println("离线成功!");socket.close();break;}// 2、创建一个数据包对象封装数据(韭菜盘子)byte[] buffer = msg.getBytes();// 注意:只要目的地IP是 255.255.255.255 这个消息将以广播的形式对外发送DatagramPacket packet = new DatagramPacket( buffer, buffer.length,InetAddress.getByName("255.255.255.255") , 8888);// 3、发送数据出去socket.send(packet);}}
}
public class ServerDemo2 {public static void main(String[] args) throws Exception {System.out.println("=====服务端启动======");// 1、创建接收端对象:注册端口(人)DatagramSocket socket = new DatagramSocket(8888);// 2、创建一个数据包对象接收数据(韭菜盘子)byte[] buffer = new byte[1024 * 64];DatagramPacket packet = new DatagramPacket(buffer, buffer.length);while (true) {// 3、等待接收数据。socket.receive(packet);// 4、取出数据即可// 读取多少倒出多少int len = packet.getLength();String rs = new String(buffer,0, len);System.out.println("收到了来自:" + packet.getAddress() +", 对方端口是" + packet.getPort() +"的消息:" + rs);}}
}
UDP如何实现组播
使用组播地址:224.0.0.0(不含) ~ 239.255.255.255(含)
具体操作:
发送端的数据包的目的地是组播IP (例如:224.0.1.1, 端口:9999)
接收端必须绑定该组播IP(224.0.1.1),端口还要注册发送端的目的端口9999 ,这样即可接收该组播消息。
DatagramSocket的子类MulticastSocket可以在接收端绑定组播IP。
代码实现:
public class ClientDemo1 {public static void main(String[] args) throws Exception {System.out.println("=====客户端启动======");// 1、创建发送端对象:发送端自带默认的端口号(人)DatagramSocket socket = new DatagramSocket();Scanner sc = new Scanner(System.in);while (true) {System.out.println("请说:");String msg = sc.nextLine();if("exit".equals(msg)){System.out.println("离线成功!");socket.close();break;}// 2、创建一个数据包对象封装数据(韭菜盘子)byte[] buffer = msg.getBytes();DatagramPacket packet = new DatagramPacket( buffer, buffer.length,InetAddress.getByName("224.0.1.1") , 9898);// 3、发送数据出去socket.send(packet);}}
}
public class ServerDemo3 {public static void main(String[] args) throws Exception {System.out.println("=====服务端启动======");// 1、创建接收端对象:注册端口(人)MulticastSocket socket = new MulticastSocket(9898);// 注意:绑定组播地址(加群)socket.joinGroup(new InetSocketAddress(InetAddress.getByName("224.0.1.1") , 9898),NetworkInterface.getByInetAddress(InetAddress.getLocalHost()));// 2、创建一个数据包对象接收数据(韭菜盘子)byte[] buffer = new byte[1024 * 64];DatagramPacket packet = new DatagramPacket(buffer, buffer.length);while (true) {// 3、等待接收数据。socket.receive(packet);// 4、取出数据即可// 读取多少倒出多少int len = packet.getLength();String rs = new String(buffer,0, len);System.out.println("收到了来自:" + packet.getAddress() +", 对方端口是" + packet.getPort() +"的消息:" + rs);}}
}相关文章:
UDP通信-广播、组播
UDP的三种通信方式 单播:单台主机与单台主机之间的通信。 广播:当前主机与所在网络中的所有主机通信。 组播:当前主机与选定的一组主机的通信。 UDP如何实现广播 使用广播地址:255.255.255.255 具体操作: 发送端…...
10-bean创建流程1一finishBeanFactoryInitialization(ConfigurableListableBeanFactory
文章目录 1. 方法的主要流程2. ConversionService-如何自定义转换器3. AbstractBeanFactory#getMergedLocalBeanDefinition(String beanName)4.FactoryBean实例化5.内置值处理器1. 方法的主要流程 /*** Finish the initialization of this contexts bean factory,* initializi…...
专题三:穷举、暴搜、深搜、回溯、剪枝【递归、搜索、回溯】
1、全排列 class Solution { public:vector<vector<int>> ret;vector<int> path;bool check[7];void dfs(vector<int>& nums){if(nums.size() path.size()) {ret.push_back(path);return;}for(int i 0;i < nums.size();i){if(check[i] fals…...
国科云SSL证书讲堂:SSL证书安装常见问题盘点
SSL证书能够对网站传输数据进行加密处理,有效提升网站的数据安全防护能力,逐渐被越来越多的政企网站所应用。但在安装使用SSL证书时,经常会发生各种意想不到的问题,对网站的数据安全和正常访问造成严重影响。本文国科云对安装使用…...
Python3无法调用Sqlalchemy解决(mysqldb)
原因 在安装Sqlalchemy后运行程序报错 无法导入mysqldb,缺失模块 ImportError: No module named ‘MySQLdb’ 既然缺少 MySQLdb 这个模块,尝试按照正常的想法执行 pip install MySQLdbpip install mysql-python 应该能解决,但是却找不到…...
2023/10/15总结
学习总结 最近开始写项目了,然后写的过程中遇到了跨域问题。 为什么会出现跨域问题 由于浏览器的同源策略限制。同源策略是一种约定,它是浏览器最核心也是最基本的安全功能。如果缺少了同源策略,那么浏览器的正常功能可能都会收到影响。所谓…...
关于图像分割SDK的一些基础认识
随着科技的不断发展,图像分割SDK已经成为了一个备受关注的话题。而在众多图像分割SDK中,美摄图像分割SDK以其独特的功能和优势脱颖而出。本文将从美摄图像分割SDK的企业价值和互联网娱乐方面,介绍其宣传文章的具体写作规范。 在企业价值方面&…...
SpringMVC之国际化上传下载
spring项目中的国际化 1)提供中英两种资源文件 i18n_en_US.properties i18n_zh_CN.properties 2)配置国际化资源文件(在spring配置文件中添加,例如spring-mvc.xml) <bean id"messageSource" class&quo…...
TigerVNC自动设置密码脚本
新建sh脚本,复制以下命令。设置ssh终端密码和vncserver密码后,运行ssh脚本,即可设置修改vncserver密码。 #!/bin/bash vncpwd"vncserver密码" sshpwd"ssh终端密码"expect << EOFset timeout 10spawn ssh root127.…...
什么是美体SDK?美摄美颜美体SDK对接开发指南
在当今的数字世界中,人们对自我表达和形象展示的需求越来越高。美体SDK应运而生,为用户提供了一种全新的美颜美体体验,让每一个人都能享受到个性化的美丽与自信。 一、美体SDK的特点 轻量级:美体SDK体积小巧,不会对用…...
【Java集合中各种数据结构的方法汇总】
文章目录 Java集合中各种数据结构的方法汇总数组 ArrayList 、LinkedList链表 LinkedList栈 Stack队列 ArrayQueue、LinkedList哈希表 HashMap堆 PriorityQueue Java集合中各种数据结构的方法汇总 获取大小:fun.size(); 判断是否为空:fun.isEmpty(); …...
算法通过村第十四关-堆|白银笔记|经典问题
文章目录 前言在数组中寻找第K大的元素堆排序原理合并K个排序链表总结 前言 提示:想要从讨厌的地方飞出来,就得有藏起来的翅膀。 --三岛由纪夫《萨德侯爵夫人》 这里我们主要看一下经典的题目,这三个题目来说都是堆的热点问题。重点再理解处理…...
如何正确维护实验室超声波清洗器?
实验室一直被视为一个严谨而严肃的场所,实验应遵循一定的步骤,使用的设备也经历了详细的选择,如实验室超声波清洗机,其特点远强于一般类型的清洗机。专门负责采购的实验室人员一般对优质服务的实验室超声波清洗机印象深刻…...
DID赛道前列的生物识别技术,开启Web3时代的大门—MXT
互联网发展的十字路口 互联网从上世纪90年代初发展至今,历经30年,她改变了整个人类的生活方式、沟通形式以及社会发展模式,她的影响早已渗透到了世界的各个角落。而如今,我们似乎正站在一个新的十字路口,一个互联网将…...
Java基础面试-final
final(最终的) 修饰类:表示类不可被继承修饰方法:表示方法不可被子类覆盖,但是可以重载修饰变量:表示变量一旦被赋值就不可以更改它的值 修饰成员变量 如果final修饰的是类变量,只能在静态初始…...
全波形反演的目标和技术
本篇文章主要讲述了全波形反演的目标和可能用到的方法,对其概念进行解释,以加深理解。若有不正确的地方,欢迎批评指正。 一. 全波形反演的目标: 1. 如何保障模型的拟合能力? 2. 如何保障模型的泛化能力? 3. 如何使结果 (速度模型) 满足物理…...
【SA8295P 源码分析】105 - QNX MISC分区读写、切换A/B启动槽、读取开机次数命令 swdl_utils 介绍 及 祼分区读写 代码实现
【SA8295P 源码分析】105 - QNX MISC分区读写、切换A/B启动槽、读取开机次数命令 swdl_utils 介绍 及 祼分区读写 代码实现 一、切换 A/B 槽启动分区二、读取开机次数三、写 MISC 信息四、Dump Misc 信息五、misc 祼分区读写 代码实现系列文章汇总见:《【SA8295P 源码分析】00…...
Grade 5 Math
数形结合 5 2 3 https://download.csdn.net/download/spencer_tseng/88431286...
简易的慢SQL自定义告警实战经验(支持多数据源)
背景 对于慢SQL相信大家都不陌生了,一旦遇到后,相信大家会很快的提供出来对应的优化方法、索引优化建议工具使用等等,对于此我相信大家已经熟悉的不能再熟悉了,但是比较不尽人意的是:在此之前我们往往是花费了大量时间才发现造成系统出现问题的是慢SQL引起的,风险自然而…...
【Springboot】Filter 过滤器的使用
一、基本介绍 过滤器 Filter 作为 Java 三大器之一,在 Java Web 的使用中有很高的地位。所谓过滤器,就是实现了 javax.servlet.Filter 接口的服务器端程序,就是对事物进行过滤的。在 Web 中的过滤器,当然就是对请求进行过滤&#…...
FastAdmin二次开发指南:如何基于这套开源CMS源码定制你的专属内容模型?
FastAdmin二次开发实战:从零构建自定义内容模型 在开源CMS领域,FastAdmin以其基于ThinkPHP的优雅架构和丰富的功能模块,成为众多开发者快速构建后台管理系统的首选。但真正体现其价值的,往往是在面对个性化业务需求时的二次开发能…...
反激式电源设计避坑指南:如何优化5V/2A方案的EMI和效率
反激式电源设计避坑指南:如何优化5V/2A方案的EMI和效率 在中小功率电源设计中,反激式拓扑凭借结构简单、成本低廉的优势占据主流地位。但当工程师面对5V/2A这类常见规格时,往往会陷入效率卡在65%难以提升、EMI测试屡次失败的困境。本文将从实…...
从零构建:基于C语言的Modbus RTU从站驱动开发指南
1. Modbus RTU从站驱动开发入门指南 第一次接触Modbus RTU从站开发时,我完全被各种专业术语搞晕了。后来在工厂里调试一个温湿度传感器时,才真正理解这个协议的精妙之处——它就像车间里老师傅们约定俗成的对话方式,主设备问一句,…...
Notepad4:轻量级编辑器的技术突破与实用指南
Notepad4:轻量级编辑器的技术突破与实用指南 【免费下载链接】notepad2 Notepad2-zufuliu is a light-weight Scintilla based text editor for Windows with syntax highlighting, code folding, auto-completion and API list for many programming languages and…...
图像比对与像素级分析:用diffimg实现高效差异检测
图像比对与像素级分析:用diffimg实现高效差异检测 【免费下载链接】diffimg Differentiate images in python - get a ratio or percentage difference, and generate a diff image 项目地址: https://gitcode.com/gh_mirrors/di/diffimg 在视觉内容创作与技…...
无GPU方案:星图平台OpenClaw镜像+百川2-13B-4bits的云端沙盒体验
无GPU方案:星图平台OpenClaw镜像百川2-13B-4bits的云端沙盒体验 1. 为什么选择云端沙盒方案 作为一个长期折腾本地AI部署的技术爱好者,我最近遇到了一个典型困境:想体验最新的OpenClaw智能体框架,但手头的MacBook Pro只有集成显…...
基于DAMOYOLO-S与计算机网络技术:构建分布式视频分析集群
基于DAMOYOLO-S与计算机网络技术:构建分布式视频分析集群 想象一下,一个大型物流园区,上百个摄像头日夜不停地运转,管理者需要实时知道:哪条通道拥堵了?哪个区域有异常人员闯入?传统的监控方式…...
Face3D.ai Pro多场景落地:VR会议、元宇宙社交、AI主播协同方案
Face3D.ai Pro多场景落地:VR会议、元宇宙社交、AI主播协同方案 1. 引言:从2D照片到3D数字人的技术突破 想象一下,你只需要上传一张普通的自拍照,就能瞬间获得一个精细的3D数字人形象。这个数字人不仅外形逼真,还能在…...
2000kn四柱式通用液压机设计【说明书 CAD图纸 开题报告】
2000kN四柱式通用液压机作为工业领域中重要的压力加工设备,其核心作用在于通过液压系统传递压力,实现对金属或非金属材料的冲压、拉伸、弯曲及成型等工艺。该设备采用四柱式框架结构,通过上下横梁与四根立柱构成刚性闭合框架,确保…...
科研党效率翻倍:Texmaker这些隐藏功能让你的论文排版快人一步
Texmaker科研效率革命:解锁高阶玩家的12个生产力加速器 在深夜实验室的灯光下,你盯着屏幕上纠缠不清的LaTeX代码,参考文献格式突然崩溃,数学公式编号混乱不堪——这场景是否似曾相识?Texmaker作为LaTeX编辑器的隐藏冠军…...
