全栈工程师开发手册 (作者:栾鹏)
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包)相关推荐

  1. java发送接收UDP数据包:字符串,byte[]字节数组,文件等

    全栈工程师开发手册 (作者:栾鹏) java教程全解 java发送接收UDP数据包,数据内容为byte[],包括一切可以转换为byte[]的内容. 测试代码 public static void ma ...

  2. android 不能接收组播数据,但能够发送组播数据

    http://blog.csdn.net/hknock/article/details/44244031 Android的Wifi,默认情况下是不接受组播的,见:http://developer.an ...

  3. 4.34、组播(多播)

    4.34.多播 1.组播(多播)的介绍 ①组播地址 ②如何设置组播(组播的使用) 2.代码编写 ①服务端 ②客户端 1.组播(多播)的介绍 单播地址标识单个 IP 接口,广播地址标识某个子网的所有 I ...

  4. linux设置网卡接受组播,linux下双网卡接收组播需要修改的参数

    工作中曾遇到一个很奇怪的问题,我奉命调查.事情是这样的,有一台双网卡的机器,上面装有Fedora8,运行一个程序.该程序分别在两个网口上都接收多播数据,程序运行是正常的.但是,后来升级系统到Fedor ...

  5. outlook发送接收错误_如何在Outlook 2013中为RSS源创建发送/接收组

    outlook发送接收错误 If you choose to manually update your RSS feeds on demand, there is a way to do this w ...

  6. 虚拟机无法接受组播消息_基于UDP的组播通信

    基于UDP的组播通信 在Java实现基于UDP协议的发送端与接收端通信中,我们可以知道它的一些主要操作: 在发送端:1,创建绑定指定端口的发送接口:DatagramSocket(port) 2,创建绑 ...

  7. UDP 实现多收多发,广播发送,组播发送 TCP 实现多收多发

    文章目录 TCP 实现多收多发(上线下线提醒) UDP多收多发 UDP广播发送接收 UDP 组播发送接收 TCP 实现多收多发(上线下线提醒) 创建发送端 public static void mai ...

  8. MAC地址的介绍(单播、广播、组播、数据收发)

    MAC地址组成 网络设备的MAC地址是全球唯一的.MAC地址长度为48比特,通常用十六进制表示.MAC地址包含两部分:前24比特是组织唯一标识符(OUI,OrganizationallyUniqueI ...

  9. 【实验】通过IGMP实现接收组播视频信息案例

    拓扑图 规格 适用于所有版本.所有形态的AR路由器. 组网需求 RouterA的GE0/0/1连接组播源,GE0/0/0连接RouterB.RouterB的GE0/0/1连接RouterA,GE0/0 ...

最新文章

  1. python全局变量有缩进吗_Python全局变量和局部变量的问题 400 请求报错 -问答-阿里云开发者社区-阿里云...
  2. 西工大18秋《C语言程序设计》平时作业,西工大18秋《C语言程序设计》平时作业(100分)...
  3. clr20r3错误问题定位与解决_解决Power BI服务中显示时间错误的问题
  4. redis运行redis-server.exe错误
  5. python3的配置文件类单例实现_单例模式的几种实现方式及对比
  6. 78. 子集-LeetCode
  7. Atitit 理财之道 attilax著 1. 融资 3 1.1. 融资账户余渠道 3 2. 风控 3 3. 3 4. 投资 3 5. 线上财富与资源 3 5.1. Jd流量 飞猪流量 3 5.
  8. python内置函数升序降序_python内置函数之sorted
  9. 技嘉主板的 BIOS 问题解决
  10. 频谱、幅度谱、功率谱和能量谱
  11. 20155313 杨瀚 《网络对抗技术》实验九 Web安全基础
  12. 费希纳定律的推导过程图解
  13. Mac -- 插入移动硬盘后没有显示
  14. 小明打游戏(Java)
  15. 微信多媒体文件speex格式转为mp3文件格式
  16. JAVA常用工具类-【5】FFMPEG转换、分割、合并音频
  17. label标签的使用
  18. 量子相干与量子纠缠_量子硬件101
  19. 从小镇到北大!再到阿里达摩院,「AI萝莉」的“升级打怪”之路...
  20. OSChina 周三乱弹 ——grath最近睡了一主播

热门文章

  1. 北京理工大学语音识别技术.ppt
  2. mysql数据库对象管理_MySQL管理与优化(15):优化数据库对象
  3. 创业冲突的五种解决方法是_当创始合伙人发生冲突时,最好的解决方法4和5
  4. vue elementui表单清空前一次的数据
  5. vue中配置不同的代理同时访问不同的后台
  6. window10设置文件夹备注
  7. 【模拟】牛客网:区间表达
  8. 延长计算机屏幕显示时间,设置Win7电源计划的方法介绍 延长续航时间
  9. idea弹出Server‘s certificate is not trusted
  10. 2021 年百度之星·程序设计大赛 - 初赛二 1005 水题(贪心结论)