java 實現區域網多播
阿新 • • 發佈:2019-01-03
要想用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
傳送。
(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
接收訊息端 Receiver.javaimport 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(); } } }
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){ } } }