是否有当getifaddrs()业绩变动的通知机制?(Is there a notification

2019-08-01 02:39发布

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

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

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

Answer 1:

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



Answer 2:

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



Answer 3:

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

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



文章来源: Is there a notification mechanism for when getifaddrs() results change?