JAVA多播套接字

"組播地址是指稱作一個組播組的一組主機的地址。 一個組播組是分享一個組播地址的一組主機。 不過

簡介

JAVA多播套接字

組播地址是指稱作一個組播組的一組主機的地址。一個組播組是分享一個組播地址的一組主機。任何傳送到組播地址的數據都會被傳送到組內的所有成員。組可以是永久的,也可以是臨時的。永久的組播地址如224.0.0.2,指局部子網中的所有系統。而大多數組播組是臨時的,而且僅在有成員時才存在。用戶創建一個新的組播組時所要做的就是從範圍225.0.0.1到238.255.255.255內撿出一個隨機地址,然後為這個地址構造一個對象,再開始傳送數據。(《Java Network Programming,Edition 2nd》)

不過,我使用多播套接字時,接收到的數據報在轉換成String時,卻前面一部分亂碼,後面才是正確的信息。而直接使用UDP套接字時,沒有這種情況。後來,我從第16個byte開始取數據,轉換得到的才是所傳送的信息。可能是多播套接字在傳送的數據前面加入了16byte的數據?

信息

import java.net.*;

public class Test

{

public static void main(String[] args) throws Exception

{

// join a Multicast group and send the group salutations

String msg = "Hello";

InetAddress group = InetAddress.getByName("228.5.6.7");

MulticastSocket s = new MulticastSocket(6789);

s.joinGroup(group);

DatagramPacket hi = new DatagramPacket(msg.getBytes(), msg.length(), group, 6789);

s.send(hi);

// get their responses!

byte[] buf = new byte[1000];

DatagramPacket recv = new DatagramPacket(buf, buf.length);

s.receive(recv);

System.out.println(new String(recv.getData(),16,recv.getLength()));

// OK, I'm done talking - leave the group...

s.leaveGroup(group);

}

}

相關詞條

熱門詞條

聯絡我們