2012-07-03 4 views
2

.Net에서 활성 IPAddress를 얻으려고합니다.이 경우 이더넷 어댑터와 연관된 주소입니다.. NET get active Ethernet IPAddress

지금 내가 사용하는 현재 시스템에 할당 된 IP 목록을 얻을 수 있습니다 알고

IPHostEntry entry = Dns.GetHostEntry(Dns.GetHostName()); 

그리고 내가 사용하여 내 다른 네트워크 인터페이스에 대한 정보의 좋은 거래를 얻을 수 있습니다 알고

NetworkInterface[] networks = NetworkInterface.GetAllNetworkInterfaces(); 

NetworkInterfaceType 열거 형을 사용하여 인터페이스가 "이더넷 인터페이스"인지 여부를 확인할 수 있지만이 NetworkInterface를 해당 IPAddress에 연결하는 방법을 찾을 수 없습니다. NetworkInterface 클래스에서 애니 캐스트 주소 나 게이트웨이 주소와 같은 것을 가져 오는 방법 만 볼 수는 있지만 이더넷 IP가 무엇인지 좁힐 수는 없습니다.

누구든지 간단하게 또는 복잡하게이 작업을 수행하는 방법을 알고 있습니까?

EDIT : 예를 들어 명령 줄의 netstat 또는 tracert는 모든 활성 네트워크 연결을 제공 할 수 있습니다. 그것은 나에게 이상한 것 같아요. 그게 비슷한 명령 줄 결과를 구문 분석하는 것이 나에게 완전히 unnessary 것 같지 않을 것이다. GetBestInterface()와 같은 것은 유용하지만 특정 IP에 대한 액세스 권한이있는 IP에서만 반환됩니다. 다시 말하지만, 다재다능하지는 않습니다.

C#을 사용하여 활성 IPAdress를 얻는 방법이 없다면 명령 줄을 사용 하겠지만 인기있는 프로그래밍 언어가 할 수있는 것처럼 보입니다. 사실, 누구나 C++ 또는 C 솔루션을 사용하면 C# 응용 프로그램에 연결하여 사용할 수 있습니다.

+0

활성 IP 주소가 두 개 이상이면 어떨까요? 아니면 하나 이상의 이더넷 어댑터? –

+0

활성 이더넷 어댑터가 1 개 이상있는 경우 모두 가져 오는 것이 좋습니다. – user912447

+0

막연하게 도움이 될만한 링크 일지라도 훌륭합니다. – user912447

답변

2

여기서 유용한 통계는 주어진 인터페이스에서 수신 된 총 바이트 수입니다. 그것은 과거에 패킷을받은 경우는 현재 "업"이고 경우를 말할 수

NetworkInterface.OperationalStatus 

:와 함께이 사용

NetworkInterface.GetIPv4Statistics().BytesReceived 

. 무선의 경우 OperationalStatus는 현재 연결되어 있지 않으면 "Down"이지만 이더넷의 경우에는 케이블이 연결되어 있지 않아도 "Up"으로 유지됩니다. 물리적 케이블이 필요하지 않기 때문에 OperationalStatus는 가정합니다 IPAddress를 제공하지만 문제는 연결되어 있지 않아 해당 주소를 사용하려고 시도하는 것이 처리 능력 낭비인지 알고 싶습니다.

마지막으로, 네트워크에 그 주소를 묶는 것은 매우 간단하다 :이 방법으로

UnicastIPAddressInformationCollection ipc = NetworkInterface.GetIPProperties().UnicastAddresses; 

, 당신의 IP 주소에서 얻을 특정의 NetworkInterface에 액세스 할 수 있습니다. 일반적으로 IPv4 및 IPv6 주소가 모두 반환됩니다.

관련 문제