【发布时间】:2010-09-21 06:29:48
【问题描述】:
我正在使用 MulticastSocket 接收 UDP 组播数据包。如何确定这样的数据包发送到哪个地址?使用提供的方法,我只能确定发件人地址。
当然,我是在创建监听套接字时设置 To-Address 的人,但我真的可以确定吗?广播包呢?以某种方式最终到达这里的数据包呢? 我真的很想区分数据包是否真的是多播。
谢谢!
更新:目前看来,刚刚发送到该端口的单播数据包也最终在多播套接字中接收():(绑定到设备也没有给我更好的结果
【问题讨论】:
-
我很困惑。设置 MulticastSocket 时,您不将其绑定到特定地址吗?这不是任何人都可以用来发送给所有人的地址吗?即使信息包本身不可用,您也应该已经拥有这些信息。
-
是的,但是请参阅我关于单播数据包的更新 :)
-
这其中丑陋的部分是,Java 多播套接字似乎接收到与套接字端口匹配的任何多播地址的数据报。因此,如果一台服务器正在多播到 226.1.1.6:5003,而另一台正在多播到 226.2.1.99:5003,那么您的 Java 应用程序将收到所有数据包,并且无法解开它们。这与套接字加入的多播组无关。
标签: java udp multicast multicastsocket