gpt4 book ai didi

java - MulticastSocket 中 joinGroup() 的用途

转载 作者:行者123 更新时间:2023-11-29 07:19:40 26 4
gpt4 key购买 nike

我正在尝试在创建 MulticastSocket 后加入多播组。

做类似的事情:

MulticastSocket mySocket = new MulticastSocket(4444);
mySocket.joinGroup(InetAddress.getByName("230.0.0.1")); // as an example

工作正常。但是,当我使用接受 SocketAddress 作为参数的 MulticastSocket 构造函数时,多播组未加入,需要单独调用 joinGroup()。

MulticastSocket mySocket = new MulticastSocket(new InetSocketAddress("230.0.0.1", 4444));

这是为什么?

谢谢!

最佳答案

除非我错了多播是通过向本地网络交换机注册(使用发送 IGMP 消息的 joinGroup 方法)实现的,然后交换机会将发送到多播地址的所有数据包转发到每个已注册的设备。如果您不调用 joinGroup,则不会发送组注册消息,本地交换机不知道您关心这些消息,因此您实际上不会收到任何消息。

有些交换机在发送方面比其他交换机更严格:我见过一些交换机,其中设备可以在不注册的情况下发送到多播组,但不会接收到多播组的数据包,我还看到其他交换机设备必须注册才能成功发送到组播组的其他成员或接收发送到组播组的数据包。

关于java - MulticastSocket 中 joinGroup() 的用途,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6133480/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com