2010-05-26 4 views
18

Windows는 NIC에서 네트워크 케이블을 제거한 시점을 알고 있습니다. C++에서 API를 통해이를 확인하는 프로그래밍 방식이 있습니까?네트워크 케이블을 분리했을 때 감지

참고 : 나는 .NET을 사용하지 오전이 (지금까지 인터넷에 연결되지 않음) 폐쇄 LAN

+1

핑 소리가 나지 않는 경우 google.com으로 보내고 응답이 없다면 케이블을 분리하십시오. :) – Dima

+1

폐쇄 된 LAN이 아닌 일부 게이트웨이를 통해 인터넷에 연결된 경우에만 작동합니다. –

답변

8

레이몬드 첸 blogged 최근에 비슷한 일이 있습니다. 다음은 관련 documentation입니다. MIB_IPADDR_DISCONNECTED 플래그를 찾고 있다고 생각합니다.

1

사용 INetwork API와 Network List Manager api입니다.

네트워크가 연결되거나 연결되지 않을 때 콜백을 수신하도록 앱을 등록 할 수 있습니다.

또는 당신은 네트워크의 목록을 다음 컴퓨터가 연결된 네트워크 여부를

윈도우 머신은 종종 여러 네트워크 (설정 한 것을 기억 있는지 그들 각각을 확인할 수 있습니다 이더넷, 와이파이 등)

네트워크가 연결되어 있기 때문에 인터넷에 액세스 할 수 없다는 것을 기억하십시오. 예를 들어 DNS 또는 라우팅 문제가있을 수 있습니다. 또는 인터넷에 연결되어 있지 않은 작동중인 네트워크에있을 수도 있습니다.

위의 이유로 많은 진단 도구는 연결 여부를 실제로 알고 싶다면 "잘 알려진"인터넷 서버에 연결합니다. google.com과 같은 것은 - 사이트가 항상 최신 상태인지 확인하기 위해 많은 돈을 지출합니다.

마지막으로 패킷이 통과하지만 통신이 실제로 가능할 정도로 반 연결되지 않은 상황을 만들 수도 있습니다. 이것을 시험하기 위해서 인터넷 사이트에 ping을 한 번 해보지 마십시오. 단지 한 쌍의 패킷 일 것입니다. 대신, TCP 연결이나 ping 이상을 열어보십시오.

+0

모두가 내가 인터넷에 대해 이야기하고 있다고 생각하는 이유를 잘 모르겠습니다. 나는 분명히해야한다고 생각합니다. 닫힌 LAN 시나리오 –

+1

INetwork http://msdn.microsoft.com/en-us/library/aa370750(VS.85).aspx를 사용하면 "네트워크에 있습니다"와 "인터넷에 있습니까"라는 별도의 질문을 할 수 있습니다. . 이 대답은 필요한 것을 제공합니다. –

+0

XP 용은 무엇입니까? 이것은 비스타와 2008 년만을 말한다. –

관련 문제