java 实现局域网多播

要想用java编程实现发送多播信息,需要经历几个基本的编程步骤。能完成以下这几步,就是可以用Java程序来实现多播信息的
发送。
  (1)确定发送消息的具体内容;
    String msg="hello";
    (2)选用专门为多播指定的D类IP地址(224.0.0.1到239.255.255.255),创建一个多播组
      InetAddress group=InetAdress.getByName(228.5.6.7);
    (3)使用指定端口(一般选1024以上的端口)建立多播套接字
     MulticastSocket s=new MulticastSocket(6798);
   (4)加入多播组。
     s.joinGroup(group);
   (5)创建一个数据报封装多播信息
    DatagramPacket hi=new DatagramPacket(msg.getByte(),msg.length().group(),group,6789);
  (6) 发送消息
    s.send(hi)
下面给出具体实现例子:
发送消息端 Sender.java
import java.net.DatagramPacket;
import java.net.InetAddress;
import java.net.MulticastSocket;
import java.net.UnknownHostException;

public class Sender {

	public static void main(String[] args) {
		//待发送的消息
		
		
		try {
			byte[] arb=new byte[]{'h','e','l','l','o'};
			//创建一个多播套接字 ip:230.0.0.1 端口:7777
			InetAddress inetadress=InetAddress.getByName("230.0.0.8");
			DatagramPacket datagram=new DatagramPacket(arb,arb.length,inetadress,7777);
		//新建一个数据包,封装多播消息并将其发出去
			MulticastSocket multicastSocket=new MulticastSocket();
			multicastSocket.send(datagram);
			
			System.out.println("发送消息");
			
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		
		

	}

}
接收消息端 Receiver.java
import java.net.DatagramPacket;
import java.net.InetAddress;
import java.net.MulticastSocket;

public class Receiver {
	public static void main(String[] args){
		try{
			//加入到Ip为230.0.1,端口为7777的多播组中,并通过创建一个多播套接字来接受多播消息
			MulticastSocket multicastsocket=new MulticastSocket(7777);
			InetAddress inetaddress=InetAddress.getByName("230.0.0.8");
			multicastsocket.joinGroup(inetaddress);
			System.out.println("接收到消息");
			//无线循环接收来自发送端的消息
			while(true){
				//System.out.print(1);
				byte[] arb=new byte[100];
				DatagramPacket datagrampacket=new DatagramPacket(arb,arb.length);
			//	System.out.print(1);
				multicastsocket.receive(datagrampacket);
			//	System.out.print(1);
				System.out.println(new String(arb));
				
				
			}
		}catch(Exception e){
			
		}
	}

}


你可能感兴趣的:(p2p,java,网络编程,多播)