importjava.net.DatagramPacket;importjava.net.InetAddress;importjava.net.MulticastSocket;publicclassMulticastReceiver{publicstaticvoidmain(String[] args){InetAddress group =null;int port =0;try{
group =InetAddress.getByName(args[0]);
port =Integer.parseInt(args[1]);}catch(Exception e){System.err.println("Usage: multicast_address port");System.exit(1);}MulticastSocket ms =null;try{
ms =newMulticastSocket(port);
ms.joinGroup(group);System.out.println("waiting for multicast test data");byte[] buffer =newbyte[8192];while(true){DatagramPacket dp =newDatagramPacket(buffer, buffer.length);
ms.receive(dp);String str =newString(dp.getData(),"UTF-8");System.out.println(str);}}catch(Exception e){
e.printStackTrace();}finally{if(ms !=null){try{
ms.leaveGroup(group);
ms.close();}catch(Exception e){
e.printStackTrace();}}}}}
2. 发送组播包
importjava.net.DatagramPacket;importjava.net.InetAddress;importjava.net.MulticastSocket;importjava.net.UnknownHostException;publicclassMulticastSender{publicstaticvoidmain(String[] args){InetAddress addr =null;int port =0;byte ttl =(byte)1;try{
addr =InetAddress.getByName(args[0]);
port =Integer.parseInt(args[1]);if(args.length >2){
ttl =(byte)Integer.parseInt(args[2]);}}catch(Exception e){
e.printStackTrace();System.err.println("Usage: multicast_address port ttl");System.exit(1);}byte[] data ="Here's some multicast test data\r\n".getBytes();DatagramPacket dp =newDatagramPacket(data, data.length, addr, port);//指定组播流输出的接口InetAddress eth =null;try{
eth =InetAddress.getByName("192.168.1.102");//接口上的IP}catch(UnknownHostException e){
e.printStackTrace();}try(MulticastSocket ms =newMulticastSocket()){
ms.setInterface(eth);
ms.setTimeToLive(ttl);
ms.joinGroup(addr);for(int i =1; i <100; i++){
ms.send(dp);}System.out.println("Multicast test data sending complete.");}catch(Exception e){
e.printStackTrace();}}}