Au démarrage, mon programme appelle getifaddrs() pour savoir quelles interfaces réseau sont disponibles pour la multidiffusion IPv6 locale locale. Cela fonctionne aussi loin que possible, mais il ne gère pas le cas où l'ensemble des interfaces réseau disponibles change après le retour de getifaddrs().Existe-t-il un mécanisme de notification pour savoir quand les résultats de getifaddrs() changent?
Le système d'exploitation peut-il notifier mon programme lorsque les interfaces réseau ont changé, pour que je puisse à nouveau appeler getifaddrs() et mettre ma liste à jour? Ou suis-je condamné à interroger getifaddrs() toutes les quelques secondes, pour toujours?
(Remarque: sous Windows, j'appelle GetAdaptersAddresses() au lieu de getifaddrs(), mais le même problème existe là)
Pourquoi vous attendez-vous à ce que les interfaces réseau changent si souvent que vous deviez interroger toutes les quelques secondes? Parlez-vous des interfaces virtuelles? –
Jusqu'à présent, nous avons principalement vu le problème sur MacBooks, où l'utilisateur a notre programme en cours d'exécution et active AirPort, se connecter/déconnecter du réseau local câblé, activer/désactiver HSPA haut débit sans fil, etc. , le programme commence à mal fonctionner car il essaie toujours d'utiliser les interfaces maintenant inactives, et n'essaie pas d'utiliser les interfaces nouvellement actives. –
Dupe: http://stackoverflow.com/questions/579783/how-to-detect-ip-address-change-programmatically-in-linux –