시작시, 내 프로그램은 getifaddrs()를 호출하여 링크 로컬 IPv6 멀티 캐스팅에 사용할 수있는 네트워크 인터페이스를 찾습니다. 이것은 가능한 한 작동하지만 getifaddrs()가 반환 된 후 사용 가능한 네트워크 인터페이스 집합이 변경되는 경우는 처리하지 않습니다.getifaddrs() 결과가 변경 될 때 알림 메커니즘이 있습니까?
네트워크 인터페이스가 변경되면 OS가 내 프로그램에 알릴 수있는 방법이 있습니까? 그래서 getifaddrs()를 다시 호출하고 목록을 업데이트 할 수 있습니까? 아니면 getifaddrs()를 몇 초마다 조사 할 운명인가?
(참고 : Windows에서, 나는() 대신의 getifaddrs()의 GetAdaptersAddresses 부르지 만, 같은 문제가 존재하는) 당신은 아마 NotifyAddrChange 및 NotifyIpInterfaceChange 기능을 살펴 갖고 싶어
몇 초마다 폴링해야하는 네트워크 인터페이스가 자주 바뀔 것이라고 생각하십니까? 가상 인터페이스에 대해 이야기하고 있습니까? –
지금까지 우리는 프로그램을 실행 중이며 AirPort를 켜고 끄고, 유선 LAN 연결/연결 해제, HSPA 고속 무선 연결 활성화/비활성화 등 MacBook에서 주로 문제를 보았습니다. , 프로그램은 여전히 비활성 인터페이스를 사용하려고 시도하고 새로 활성화 된 인터페이스를 사용하려고 시도하지 않으므로 오동작하기 시작합니다. –
Dupe : http://stackoverflow.com/questions/579783/how-to-detect-ip-address-change-programmatically-in-linux –