SSDP UDP广播的永久监听器

时间:2016-08-24 11:07:51

标签: delphi indy upnp ssdp

我已经实施了this thread中给出的示例代码。这是一种承诺的款待。不幸的是,它只会报告对M-SEARCH请求的直接响应,但没有别的。我正在寻找一种方法来收听SSDP广播,以便捕获其他应用程序的搜索或通知广播。

我已经尝试过TIdUDPServer的各种配置,但没有一个成功。我已经到了我认为可能无法实现的地步。

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

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

1 个答案:

答案 0 :(得分:0)

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设备。有线。我需要了解更多东西......

再次感谢和问候

的Carsten