用Java在Internet上发送多播数据包

时间:2017-06-16 00:27:21

标签: java sockets ip multicastsocket igmp

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

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

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

但它恰好发生在本地网络中而非#34;互联网"。

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

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

1 个答案:

答案 0 :(得分:0)

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

IGMP消息由多播接收器发送,以使路由器知道将多播流量转发到的位置。您不需要显式发送数据包,因为当您通过MulticastSocket方法之一加入多播组时,操作系统会自动执行此操作。

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

有一个名为MBONE的实验性互联网组播主干,但我不相信它已经在使用了。

所以不,你不能通过公共互联网发送多播,无论语言如何。