1. 程式人生 > >java 實現區域網多播

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){
			
		}
	}

}