在启动时,我的程序调用getifaddrs()来找出网络接口可用于连接本地IPv6组播。 这工作尽可能去,但它不处理,其中getifaddrs后的设定的可用网络接口的变化()返回的情况。
是否有某种方式的OS当网络接口更改后通知我的计划,这样我就可以再次调用getifaddrs()和更新我的名单? 还是我注定要轮询getifaddrs()每隔几秒钟,永远不会消失?
(注:在Windows上,我呼吁GetAdaptersAddresses()代替getifaddrs(),但同样的问题存在那里)
你可能想看看在NotifyAddrChange和NotifyIpInterfaceChange功能。
此外,Linux的方式来实现,这是通过打开家庭AF_NETLINK和亚型NETLINK_ROUTE的插座和阅读上它到达从内核,如图列入“人7 netlink的”示例代码的消息。 (感谢罗布Searce指着我的!)
如果有人有兴趣,我发现苹果的开发者网站上的以下文档,描述了如何获得通知网络配置更改时。 这是不平凡的,但我没有去为我工作的技术。 参见清单8尤其如此。
技术说明TN1145 -生活在一个动态TCP / IP环境”