문제

시작시, 내 프로그램은 getifaddrs ()를 호출하여 Link-Local IPv6 멀티 캐스트에 사용할 수있는 네트워크 인터페이스를 찾습니다. 이것은 진행되는 한 멀리 작동하지만 Getifaddrs ()가 반환 된 후 사용 가능한 네트워크 인터페이스 세트가 변경되는 경우를 처리하지 않습니다.

네트워크 인터페이스가 변경되었을 때 OS가 내 프로그램에 알릴 수있는 방법이 있습니까? 따라서 getifaddrs ()를 다시 호출하고 목록을 업데이트 할 수 있습니까? 아니면 몇 초마다 getifaddrs () 여론 조사에 파멸 되었습니까?

(참고 : Windows에서는 getifaddrs () 대신 getAdapterSaddresses ()를 호출하지만 같은 문제가 있습니다)

도움이 되었습니까?

해결책

아마도 NotifyAddrChange 및 NotifyIpInterFaceChange 함수를보고 싶을 것입니다.

다른 팁

또한 Linux를 구현하는 방법은 AF_NETLINK 및 SUBTYPE NETLINK_ROUTE의 소켓을 열고 "Man 7 NetLink"에 포함 된 예제 코드에 표시된 것처럼 커널에서 도착한 메시지를 읽는 것입니다. (저를 지적 해 준 Rob Searce에게 감사합니다!)

누구나 관심이있는 경우 Apple의 개발자 사이트에서 네트워크 구성이 변경 될 때 알림을받는 방법을 설명하는 다음 문서를 찾았습니다. 그것은 사소한 일이지만, 나는 나를 위해 일할 기술을 얻었습니다. 특히 목록 8을 참조하십시오.

기술 노트 TN1145- 역동적 인 TCP/IP 환경에 살고 있습니다. "

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top