2

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

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

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

但它只发生在本地网络而不是“互联网”上。

有没有办法通过互联网发送多播数据包?如果可能的话,解释它并解释我如何用 Java 实现它。

我发现了一些像 IGMP 这样的协议......但我认为它是在 MulticastSocket 中开发的。

4

1 回答 1

0

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

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

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

有一个名为MBONE的实验性 Internet 多播主干网,但我认为它不再使用了。

所以不,你不能通过公共互联网发送多播,不管是什么语言。

于 2017-06-19T18:48:48.560 回答