1

我已经实现了这个线程中给出的示例代码。它按承诺工作。不幸的是,它只会报告对 M-SEARCH 请求的直接响应,而不会报告其他内容。我正在寻找一种只收听 SSDP 广播的方法,以便捕获其他应用程序的搜索或通知广播。

我用 TIdUDPServer 尝试了各种配置,但都没有成功。我已经到了我认为这可能不可能的地步。

我在同一网络上的另一台计算机上运行启用了网络发现的 Win 8.1 和 MediaServer。防火墙打开或关闭没有任何区别。使用 Window 的 UPnP API 可以按预期工作,使用 UPnP 的应用程序正在正确检测 MediaServer 和其他 UPnP 设备。

Window 的内置 UPnP 服务是否在 239:255:255:250:1900 捕获这些广播并且不传递它们?我怎么能只听那些广播?

4

1 回答 1

1

jku 为我指出了正确的方向。该类TIdUDPServer提供了一个AddMulticastMembership方法,它可以解决问题。谢谢jku!

在有效的代码下方:

var
  server : TIdUDPServer;

...

with server do
  Active := false;
  BroadcastEnabled := true;
  DefaultPort := 1900;
  Binding.IP := GStack.LocalAddress;
  Binding.AddMulticastMembership('239.255.255.250');
  active := true;
end;

我一直在搞各种配置和测试,直到我注意到我的防火墙已将某些东西列入黑名单。仍然需要弄清楚它是什么,但关闭 FW 进行测试肯定会有所帮助。也重置我的路由器。除了localhost我没有看到任何东西之外,在路由器重置后,网络上的所有 UPnP 设备都可以再次看到。有线。更多我需要了解的东西....

再次感谢和问候

卡斯滕

于 2016-08-24T17:31:57.837 回答