在启动时,我的程序调用getifaddrs()来找出网络接口可用于连接本地IPv6组播。这工作尽可能去,但它不处理,其中一组可用的网络接口getifaddrs后的变化()返回的情况。

是否有某种方式在网络接口已经改变了OS通知我的计划,这样我就可以再次调用getifaddrs()和更新我的名单?还是我注定要轮询getifaddrs()每隔几秒钟,永远不会消失?

(注:在Windows上,我呼吁GetAdaptersAddresses(),而不是getifaddrs(),但同样的问题存在那里)

有帮助吗?

解决方案

您可能想看看在NotifyAddrChange和NotifyIpInterfaceChange功能。

其他提示

另外,在Linux的方式来实现,这是通过打开家庭AF_NETLINK和亚型NETLINK_ROUTE的插座和读取在其上到达从内核,如图包括在“人7的netlink”示例代码的消息。 (感谢罗布Searce指着我的!)

在情况下,有人有兴趣,我发现苹果的开发者网站上的以下文档,描述了如何获得通知网络配置更改时。这是不平凡的,但我没有去为我工作的技术。参见清单8尤其如此。

技术说明TN1145 - 生活在一个动态TCP / IP环境“

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top