在 Java 内通过互联网发送多播数据包

Send multi cast packets over internet in Java

我想开发一个 Web 应用程序,它使用 UDP 协议向 JAVA 中的客户端发送数据包。

我需要直接向每个客户端发送数据包。

Java 提供一个名为 MulticastSocket 的 class 扩展 UDP。这可以通过网络向多个客户端发送数据包。

但它只发生在本地网络中,而不是 "Internet"。

有什么方法可以通过互联网发送多播数据包吗? 如果可能的话解释一下并解释我如何在 Java.

中实现它

我发现了一些协议,比如 IGMP...但我认为它是在 MulticastSocket 中开发的。

发送多播数据包时,如果您希望它们通过一个或多个路由器,则需要将传出数据包的 TTL 设置为至少与您希望通过的路由器数量一样大。您可以通过 MulticastSocket.

setTimeToLive() 方法进行设置

IGMP 消息由多播接收器发送,让路由器知道将多播流量转发到哪里。您不需要显式发送数据包,因为 OS 会在您通过 joinGroup 方法之一加入多播组时自动发送。

然而,通过 public Internet 发送多播的主要问题是大多数路由器未配置为允许多播流量通过它们。默认情况下,它们将丢弃 IGMP 数据包而不是转发它们。

有一个名为 MBONE 的实验性 Internet 多播 backbone,但我认为它已不再使用。

所以不,您不能通过 public Internet 发送多播,无论使用何种语言。