当前位置:首页 科普知识 JAVA多播套接字

JAVA多播套接字

发布时间:2023-09-07 23:14:03

JAVA多播套接字,组播地址是指称作一个组播组的一组主机的地址。

JAVA多播套接字详细介绍

JAVA多播套接字,组播地址是指称作一个组播组的一组主机的地址。

JAVA多播套接字

JAVA多播套接字简介

JAVA多播套接字

组播地址是指称作一个组播组的一组主机的地址。一个组播组是分享一个组播地址的一组主机。任何发送到组播地址的数据都会被发送到组内的所有成员。组可以是永久的,也可以是临时的。永久的组播地址如224.0.0.2,指局部子网中的所有系统。而大多数组播组是临时的,而且仅在有成员时才存在。用户创建一个新的组播组时所要做的就是从范围225.0.0.1到238.255.255.255内捡出一个随机地址,然后为这个地址构造一个对象,再开始发送数据。(《Java Network Programming,Edition 2nd》)

不过,我使用多播套接字时,接收到的数据报在转换成String时,却前面一部分乱码,后面才是正确的信息。而直接使用UDP套接字时,没有这种情况。后来,我从第16个byte开始取数据,转换得到的才是所发送的信息。可能是多播套接字在发送的数据前面加入了16byte的数据?

JAVA多播套接字信息

import java.net.*;

public class Test

{

public static void main(String args) throws Exception

{

// join a Multicast group and send the group salutations

JAVA多播套接字

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;

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

s.receive(recv);

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

JAVA多播套接字

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

s.leaveGroup(group);

}

}

温馨提示:
本文【JAVA多播套接字】由作者 爱百科 转载提供。 该文观点仅代表作者本人, 自学教育网 信息发布平台,仅提供信息存储空间服务, 若存在侵权问题,请及时联系管理员或作者进行删除。
(c)2008-2025 自学教育网 All Rights Reserved 汕头市灵创科技有限公司
粤ICP备2024240640号-6