【发布时间】:2016-08-24 11:07:50
【问题描述】:
我已经实现了this thread 中给出的示例代码。它按承诺工作。不幸的是,它只会报告对 M-SEARCH 请求的直接响应,而不会报告其他内容。我正在寻找一种只收听 SSDP 广播的方法,以便捕获其他应用程序的搜索或通知广播。
我用 TIdUDPServer 尝试了各种配置,但都没有成功。我已经到了我认为不可能的地步。
我在同一网络上的另一台计算机上运行启用了网络发现的 Win 8.1 和 MediaServer。防火墙打开或关闭没有任何区别。使用 Window 的 UPnP API 可以正常工作,并且使用 UPnP 的应用程序正在正确检测 MediaServer 和其他 UPnP 设备。
Window 的内置 UPnP 服务是否在 239:255:255:250:1900 捕获这些广播并且不传递它们?我怎样才能只听那些广播?
【问题讨论】:
-
SSDP 不是广播,它是 UDP 多播。这意味着您的服务器需要在传递消息之前加入多播组(M-SEARCH 回复不是多播,因此它们可以工作)。因为我不知道 TldUDPServer,所以我没有写这个作为答案。
-
我觉得你需要使用
TIdIPMCastClient -
谢谢jiu。请参阅下面的答案。我想,我无法收听广播并使用相同的服务器类实例发送我自己的发现 ssdp,对吧?这必须分为两个实例,一个用于侦听器,一个用于发现请求及其答案,对吗?