监听UDP组播数据包

3
我的AutoIt脚本应该接收发送到239.255.250.250:9131的UDP多播数据包。但它无法工作,我看不到指定UDPBind()UDP多播地址的选项。
下面代码中的UDPBind()返回错误 10049(无效地址)
UDPStartup()
UDPBind("239.255.250.250", 9131)
While 1
   $msg = UDPRecv($recv, 512)
   If $msg <> "" Then
      ConsoleWrite($msg)
   EndIf
   Sleep(100)
WEnd

如何监听UDP多播数据包?


也许这会有所帮助:http://stackoverflow.com/questions/20289986/upnp-envelopes-from-scratch-not-really-working - Bookeater
谢谢@Bookeater,但那段代码是接收非多播地址的响应。我想真正监听多播数据包。不过,有一条评论说“通常情况下,您首先绑定本地IP地址,然后再添加多播地址”,但我没有找到任何可用于加入多播地址的函数。 - Urmil Parikh
1个回答

1

您不能绑定到多播地址。绑定是一种本地操作,用于设置侦听接口(在Windows上)和端口。

要接收多播,您需要:

  • 绑定到要接收多播的接口和端口的IP地址。在Windows上,绑定到所选接口上的IP地址。在Linux上,绑定到0.0.0.0。

  • 使用适当的机制加入多播组。


我同意。我找不到第二步加入多播组的API,不知道是否有人已经找到了解决方案... - Urmil Parikh

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接