Java 在线使用多播套接字

Java 在线使用多播套接字,java,networking,multicast,multicastsocket,Java,Networking,Multicast,Multicastsocket,我试图创建一个服务器,它通过数据报套接字接收音频馈送,并将音频流传输到不同的侦听器。我最初是这样做的,让另一个数据报套接字等待听众请求加入,然后为他们创建一个专用的数据报套接字,将其添加到一个数组中,当我发送音频时,我只是在所有数组中循环发送音频。可能不是很有效,但它最初是工作的(尽管现在由于未知的原因,它不能在线工作,尽管它在我的本地网络上工作得很好) 我决定对多播套接字进行更多的研究,因为它们似乎非常适合我要做的事情,但是我对以下几点感到困惑,特别是您似乎只能使用IP地址范围为224.0.0

我试图创建一个服务器,它通过数据报套接字接收音频馈送,并将音频流传输到不同的侦听器。我最初是这样做的,让另一个数据报套接字等待听众请求加入,然后为他们创建一个专用的数据报套接字,将其添加到一个数组中,当我发送音频时,我只是在所有数组中循环发送音频。可能不是很有效,但它最初是工作的(尽管现在由于未知的原因,它不能在线工作,尽管它在我的本地网络上工作得很好)

我决定对多播套接字进行更多的研究,因为它们似乎非常适合我要做的事情,但是我对以下几点感到困惑,特别是您似乎只能使用IP地址范围为224.0.0.0-234.255.255.255的多播套接字

这在本地网络中是没有问题的,但我不明白这在网络上是如何工作的,如果我不能使用我的服务器的IP地址,我是否可以用我可以选择的随机端口将音频流到该范围内的IP地址,然后让听者加入该组

如果是这样的话,我怎么知道其他人没有使用相同的ip地址和端口来传输某种数据?我试着寻找一个答案,但没有找到任何像样的答案。stackoverflow中对这个问题的回答只是说这是不可能的:但我再次阅读并看到了无数教程,其中提到了多播套接字的主要用途之一是互联网广播电台,例如,youtube教程说:on minute:15:27


如果是这样的话,那一定是有可能的,但我就是无法得到一个合理的答案,说明这将如何运作。如果你能花点时间给我解释一下,我会非常感激的

多播地址动态保留有自己的RFC。我不知道它们中的任何一个的实现状态。你不能在互联网上多播,除非通过隧道。多播路由不同于普通IP路由,路径中的每个路由器都必须启用多播路由、相同的多播模式(SM或DM)和相同的多播策略。这在Internet上是不可能的。@RonMaupin如果多播不是在线传输数据的可行选项,那么最好的选择是什么?我目前为每个侦听器创建数据报套接字的方法对我来说是相当浪费的。大多数这样做的公司都有多个具有复制服务器的区域站点。使用类似anycast的功能,用户可以连接到最近的(从Internet的角度来看)服务器,从该服务器接收流。了解这些区域性站点有非常大的管道。你可能想在上而不是在这里问这个问题。那里的人对这类事情有更多的经验,但我真的想阻止你在互联网上进行多播,因为你不能这样做。