啓動時,我的程序調用getifaddrs()來查找哪些網絡接口可用於鏈接本地IPv6多播。這種方式儘可能地發揮作用,但它不處理getifaddrs()返回後可用網絡接口集合發生變化的情況。是否有getifaddrs()結果更改的通知機制?
當網絡接口發生變化時,操作系統是否可以通知我的程序,因此我可以再次調用getifaddrs()並更新我的列表?或者我註定每隔幾秒輪詢getifaddrs(),永遠?
(注:在Windows上,我呼籲GetAdaptersAddresses()代替getifaddrs(),但同樣的問題存在那裏)
爲什麼你會期望網絡接口變化頻繁,以至於你不得不每隔幾秒輪詢一次?你在談論虛擬接口嗎? – 2009-08-13 05:56:12
到目前爲止,我們主要看到了MacBook上的問題,用戶使用我們的程序運行並打開和關閉AirPort,連接/斷開有線局域網,啓用/禁用HSPA高速無線等。當發生這種情況時,程序開始發生故障,因爲它仍然試圖使用現在不活動的接口,而不是嘗試使用新活動的接口。 – 2009-08-13 15:46:16
Dupe:http://stackoverflow.com/questions/579783/how-to-detect-ip-address-change-programmatically-in-linux – 2010-08-09 14:28:42