java发送接收组播(多播)数据包(UDP包)
2017-10-08 18:10
656 查看
全栈工程师开发手册 (作者:栾鹏)
java教程全解
java发送组播(多播)数据包。首先要加入组播组,然后才能向组播组发送组播数据包和接收组播数据包。
以下代码,在局域网中测试有效。
测试代码
创建一个组播组,并加入此组播组,多播地址为D类ip,目的地址为224.0.0.0~239.255.255.255
向组播组发送数据的函数,以UDP形式发送
从组播组接收数据的函数
java教程全解
java发送组播(多播)数据包。首先要加入组播组,然后才能向组播组发送组播数据包和接收组播数据包。
以下代码,在局域网中测试有效。
测试代码
public static void main(String[] args) { final MulticastSocket socket=createMulticastGroupAndJoin("224.0.0.0",5000); //加入组播组,设置组播组的监听端口为5000 new Thread(new Runnable() { @Override public 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.0 MulticastSocket 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()); // 初始化DatagramPacket socket.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数据包:字符串,byte[]字节数组,文件等
- linux下使用C语言接收和发送udp组播数据分别怎么写?
- 黑马程序员--Java基础学习之网络编程(TCP、UDP、Socket、模拟发送和接收数据)
- java Udp实现简单地发送接收信息
- Java基础——实现UDP发送数据和接收数据
- JAVA之UDP广播接收与发送小程序
- Java_网络编程_使用UDP协议发送及接收数据
- [疯狂Java]UDP:接收发送数据报、获取接收到的数据报的相关信息
- java-利用udp做一个简单的发送与接收
- linux socket接收、发送小工具(支持tcp、udp包(组播)的发送接收)
- java UDP报文的发送与接收
- Java UDP 接收发送[CODE]
- JAVA---udp数据的发送与接收
- Java网络编程笔记--实现UDP广播发送与接收
- java中socket发送数据接收数据(udp)
- java下udp的DatagramSocket 发送与接收
- Java TCP/IP之UDP 套接字发送和接收信息
- Android使用wifi通过UDP协议发送广播数据包给PC接收不到问题解决方法
- [Java]Android发送UDP数据包
- UDP及其组播,接收发送封装