我正在使用 SSDPClient 和 BlueSocket 来发现一些 NAS 设备。
现在,我发现使用库存代码,我只能在默认接口上收到响应,而不能在具有自己子网的其他接口上收到响应。我在每个子网上都有一个 NAS,当我将其中一个接口设置为默认接口时,该子网上的设备会响应,但我没有收到另一个接口的响应。
我怀疑BlueSocket只在默认接口上监听或广播(多播)。但我不知道如何改变它,因为源代码中没有提到接口,而且我对 BSD 套接字设计不够熟悉,无法找到如何修复代码。
我怀疑我需要迭代所有接口,获取它们的 IP 地址,然后让 SSDPDiscovery 代码监听或写入每个接口,以获得所有响应。我怎样才能做到这一点?
BlueSocket 代码将接口地址称为“节点”。它是
listen()
函数的参数。
要侦听备用接口,请将其本地 IP 地址作为
node:
参数传递,如下所示:
try self.socket!.listen(on: 0, node: "192.168.2.123")