我已经实施了this thread中给出的示例代码。这是一种承诺的款待。不幸的是,它只会报告对M-SEARCH请求的直接响应,但没有别的。我正在寻找一种方法来收听SSDP广播,以便捕获其他应用程序的搜索或通知广播。
我已经尝试过TIdUDPServer的各种配置,但没有一个成功。我已经到了我认为可能无法实现的地步。
我在启用了网络发现的情况下运行Win 8.1,在同一网络上运行另一台计算机上的MediaServer。打开或关闭防火墙并没有任何区别。使用Window的UPnP API按预期工作,使用UPnP的应用程序正在正确检测MediaServer和其他UPnP设备。
Window的内置UPnP服务是否在239:255:255:250:1900上捕获这些广播并且没有传递它们?我怎么才能听那些广播?
答案 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