java发送接收组播(多播)数据包(UDP包)
全栈工程师开发手册 (作者:栾鹏)
java教程全解
java发送组播(多播)数据包。首先要加入组播组,然后才能向组播组发送组播数据包和接收组播数据包。
以下代码,在局域网中测试有效。
测试代码
public static void main(String[] args)
{final MulticastSocket socket=createMulticastGroupAndJoin("224.0.0.0",5000); //加入组播组,设置组播组的监听端口为5000new Thread(new Runnable() {@Overridepublic void run() {sendData(socket,"luanpeng".getBytes(),"224.0.0.0"); //向组播组发送数据}}).start();String message = recieveData(socket,"224.0.0.0");//接收组播组传来的消息System.out.println(message);
}
创建一个组播组,并加入此组播组,多播地址为D类ip,目的地址为224.0.0.0~239.255.255.255
public static MulticastSocket createMulticastGroupAndJoin(String groupurl,int port) // 创建一个组播组并加入此组的函数
{try {InetAddress group = InetAddress.getByName(groupurl); // 设置组播组的地址为239.0.0.0MulticastSocket socket = new MulticastSocket(port); // 初始化MulticastSocket类并将端口号与之关联socket.setTimeToLive(1); // 设置组播数据报的发送范围为本地网络socket.setSoTimeout(10000); // 设置套接字的接收数据报的最长时间socket.joinGroup(group); // 加入此组播组return socket;} catch (Exception e1) {System.out.println("Error: " + e1); // 捕捉异常情况return null;}
}
向组播组发送数据的函数,以UDP形式发送
public static void sendData(MulticastSocket socket,byte[] data,String groupurl) // 向组播组发送数据的函数
{try {InetAddress group=InetAddress.getByName(groupurl);// 存储在数组中DatagramPacket packet = new DatagramPacket(data, data.length, group, socket.getPort()); // 初始化DatagramPacketsocket.send(packet); // 通过MulticastSocket实例端口向组播组发送数据util.out("以UDP形式发送组播报文");} catch (Exception e1) {System.out.println("Error: " + e1); // 捕捉异常情况}
}
从组播组接收数据的函数
public static String recieveData(MulticastSocket socket,String groupurl)
{String message;try {InetAddress group=InetAddress.getByName(groupurl);byte[] data = new byte[512];DatagramPacket packet=new DatagramPacket(data, data.length,group,socket.getPort());socket.receive(packet); // 通过MulticastSocket实例端口从组播组接收数据// 将接受的数据转换成字符串形式message = new String(packet.getData());} catch (Exception e1) {System.out.println("Error: " + e1); // 捕捉异常情况message = "Error: " + e1;}return message;
}
java发送接收组播(多播)数据包(UDP包)相关推荐
- java发送接收UDP数据包:字符串,byte[]字节数组,文件等
全栈工程师开发手册 (作者:栾鹏) java教程全解 java发送接收UDP数据包,数据内容为byte[],包括一切可以转换为byte[]的内容. 测试代码 public static void ma ...
- android 不能接收组播数据,但能够发送组播数据
http://blog.csdn.net/hknock/article/details/44244031 Android的Wifi,默认情况下是不接受组播的,见:http://developer.an ...
- 4.34、组播(多播)
4.34.多播 1.组播(多播)的介绍 ①组播地址 ②如何设置组播(组播的使用) 2.代码编写 ①服务端 ②客户端 1.组播(多播)的介绍 单播地址标识单个 IP 接口,广播地址标识某个子网的所有 I ...
- linux设置网卡接受组播,linux下双网卡接收组播需要修改的参数
工作中曾遇到一个很奇怪的问题,我奉命调查.事情是这样的,有一台双网卡的机器,上面装有Fedora8,运行一个程序.该程序分别在两个网口上都接收多播数据,程序运行是正常的.但是,后来升级系统到Fedor ...
- outlook发送接收错误_如何在Outlook 2013中为RSS源创建发送/接收组
outlook发送接收错误 If you choose to manually update your RSS feeds on demand, there is a way to do this w ...
- 虚拟机无法接受组播消息_基于UDP的组播通信
基于UDP的组播通信 在Java实现基于UDP协议的发送端与接收端通信中,我们可以知道它的一些主要操作: 在发送端:1,创建绑定指定端口的发送接口:DatagramSocket(port) 2,创建绑 ...
- UDP 实现多收多发,广播发送,组播发送 TCP 实现多收多发
文章目录 TCP 实现多收多发(上线下线提醒) UDP多收多发 UDP广播发送接收 UDP 组播发送接收 TCP 实现多收多发(上线下线提醒) 创建发送端 public static void mai ...
- MAC地址的介绍(单播、广播、组播、数据收发)
MAC地址组成 网络设备的MAC地址是全球唯一的.MAC地址长度为48比特,通常用十六进制表示.MAC地址包含两部分:前24比特是组织唯一标识符(OUI,OrganizationallyUniqueI ...
- 【实验】通过IGMP实现接收组播视频信息案例
拓扑图 规格 适用于所有版本.所有形态的AR路由器. 组网需求 RouterA的GE0/0/1连接组播源,GE0/0/0连接RouterB.RouterB的GE0/0/1连接RouterA,GE0/0 ...
最新文章
- python全局变量有缩进吗_Python全局变量和局部变量的问题 400 请求报错 -问答-阿里云开发者社区-阿里云...
- 西工大18秋《C语言程序设计》平时作业,西工大18秋《C语言程序设计》平时作业(100分)...
- clr20r3错误问题定位与解决_解决Power BI服务中显示时间错误的问题
- redis运行redis-server.exe错误
- python3的配置文件类单例实现_单例模式的几种实现方式及对比
- 78. 子集-LeetCode
- Atitit 理财之道 attilax著 1. 融资	3 1.1. 融资账户余渠道	3 2. 风控	3 3. 	3 4. 投资	3 5. 线上财富与资源	3 5.1. Jd流量 飞猪流量	3 5.
- python内置函数升序降序_python内置函数之sorted
- 技嘉主板的 BIOS 问题解决
- 频谱、幅度谱、功率谱和能量谱
- 20155313 杨瀚 《网络对抗技术》实验九 Web安全基础
- 费希纳定律的推导过程图解
- Mac -- 插入移动硬盘后没有显示
- 小明打游戏(Java)
- 微信多媒体文件speex格式转为mp3文件格式
- JAVA常用工具类-【5】FFMPEG转换、分割、合并音频
- label标签的使用
- 量子相干与量子纠缠_量子硬件101
- 从小镇到北大!再到阿里达摩院,「AI萝莉」的“升级打怪”之路...
- OSChina 周三乱弹 ——grath最近睡了一主播
热门文章
- 北京理工大学语音识别技术.ppt
- mysql数据库对象管理_MySQL管理与优化(15):优化数据库对象
- 创业冲突的五种解决方法是_当创始合伙人发生冲突时,最好的解决方法4和5
- vue elementui表单清空前一次的数据
- vue中配置不同的代理同时访问不同的后台
- window10设置文件夹备注
- 【模拟】牛客网:区间表达
- 延长计算机屏幕显示时间,设置Win7电源计划的方法介绍 延长续航时间
- idea弹出Server‘s certificate is not trusted
- 2021 年百度之星·程序设计大赛 - 初赛二 1005 水题(贪心结论)