处理 uPnP 设备中的 IP 更改
Handling IP changes in uPnP device
我正在使用基于 ARM 的媒体处理器。我需要为设备实现 upnp。只需要广告,即设备发现,以便可以找到设备的 IP 地址。我能够实现广告,但是当设备的 IP 更改时我失败了。有没有一种方法可以检测到 IP 的变化并更改设备的广告。提前致谢
没有任何东西 'in UPnP' 可以为您处理这个问题——这是有道理的,因为 UPnP 是一种媒体共享协议,找出当前 IP 与媒体共享以及整个操作系统完全无关具体。
如果您使用的是像样的 UPnP 库,那么我希望该库能够为您提供此类功能。但是既然你说你自己实现了 UPnP...那么你就可以自己实现所有的东西了。
我的第一个建议是不要自己实现 UPnP。它可能看起来很简单,但实际上并非如此。查找 "invent the wheels" 适合您的库,并专注于实际解决您要解决的问题。我知道将库安装到嵌入式设备并不总是那么容易,但我可以保证以半途而废的方式实现 UPnP 是相当困难的。
假设第一个建议不可行:看看 GUPnP handles this: There are ContextManagers (that handle network contexts) for Connman, NetworkManager and generic Linux. The latter might be a useful starting point for you: https://git.gnome.org/browse/gupnp/tree/libgupnp/gupnp-linux-context-manager.c 是如何在网络接口启动时发出 "context-available" 信号的。请注意,该代码已根据 LGPL 获得许可。
我正在使用基于 ARM 的媒体处理器。我需要为设备实现 upnp。只需要广告,即设备发现,以便可以找到设备的 IP 地址。我能够实现广告,但是当设备的 IP 更改时我失败了。有没有一种方法可以检测到 IP 的变化并更改设备的广告。提前致谢
没有任何东西 'in UPnP' 可以为您处理这个问题——这是有道理的,因为 UPnP 是一种媒体共享协议,找出当前 IP 与媒体共享以及整个操作系统完全无关具体。
如果您使用的是像样的 UPnP 库,那么我希望该库能够为您提供此类功能。但是既然你说你自己实现了 UPnP...那么你就可以自己实现所有的东西了。
我的第一个建议是不要自己实现 UPnP。它可能看起来很简单,但实际上并非如此。查找 "invent the wheels" 适合您的库,并专注于实际解决您要解决的问题。我知道将库安装到嵌入式设备并不总是那么容易,但我可以保证以半途而废的方式实现 UPnP 是相当困难的。
假设第一个建议不可行:看看 GUPnP handles this: There are ContextManagers (that handle network contexts) for Connman, NetworkManager and generic Linux. The latter might be a useful starting point for you: https://git.gnome.org/browse/gupnp/tree/libgupnp/gupnp-linux-context-manager.c 是如何在网络接口启动时发出 "context-available" 信号的。请注意,该代码已根据 LGPL 获得许可。