2012-03-24 19 views
45

私はすべてのネットワークインタフェースをIPv4アドレスで取得する方法を知る必要があります。 または無線とイーサネットのみ。ネットワークインターフェイスとその正しいIPv4アドレスを取得するにはどうすればよいですか?

foreach (NetworkInterface ni in NetworkInterface.GetAllNetworkInterfaces()) { 
    if(ni.NetworkInterfaceType == NetworkInterfaceType.Wireless80211 || 
     ni.NetworkInterfaceType == NetworkInterfaceType.Ethernet) { 

     Console.WriteLine(ni.Name); 
    } 
} 

そして、コンピュータのすべてのホストされたIPv4アドレスを取得するために:私はこれを使用するすべてのネットワークインターフェイスの詳細情報を取得するには

IPAddress [] IPS = Dns.GetHostAddresses(Dns.GetHostName()); 
foreach (IPAddress ip in IPS) { 
    if (ip.AddressFamily == AddressFamily.InterNetwork) { 

     Console.WriteLine("IP address: " + ip); 
    } 
} 

しかし、どのようにネットワークインターフェイスを取得し、その右のipv4アドレス?

+1

お読みくださいもう少し慎重に。 [GetIPProperties]を参照してください(http://msdn.microsoft.com/en-us/library/system.net.networkinformation.networkinterface.getipproperties.aspx) –

+0

@JohnSaunders大丈夫です。私はあなたのリンクをチェックして..それを試しました。私はIPV4アドレスを取得していない! 192.168.1.25のように! –

+3

これは私が思ったよりも少し微妙です。 [IPGlobalProperties.GetUnicastAddresses](http://msdn.microsoft.com/en-us/library/system.net.networkinformation.ipglobalproperties.getunicastaddresses.aspx)を参照してください。 –

答えて

80
foreach(NetworkInterface ni in NetworkInterface.GetAllNetworkInterfaces()) 
{ 
    if(ni.NetworkInterfaceType == NetworkInterfaceType.Wireless80211 || ni.NetworkInterfaceType == NetworkInterfaceType.Ethernet) 
    { 
     Console.WriteLine(ni.Name); 
     foreach (UnicastIPAddressInformation ip in ni.GetIPProperties().UnicastAddresses) 
     { 
      if (ip.Address.AddressFamily == System.Net.Sockets.AddressFamily.InterNetwork) 
      { 
       Console.WriteLine(ip.Address.ToString()); 
      } 
     } 
    } 
} 

これはあなたが望むものを得るはずです。 ip.Addressは、必要なIPAddressです。いくつかの改善と

+3

これは[this](https:// goo .gl/rmP8RO)Linqクエリ。 – Joseph

+0

@Josephあなたのリンクは死んでいます:/ – Felk

+1

@Felkありがとう、これは元のURLですhttps://gist.github.com/anonymous/ff82643c9a004281544a – Joseph

1

、このコードは組み合わせに任意のインターフェイス追加します。

private void LanSetting_Load(object sender, EventArgs e) 
{ 
    foreach (NetworkInterface nic in NetworkInterface.GetAllNetworkInterfaces()) 
    { 
     if ((nic.NetworkInterfaceType == NetworkInterfaceType.Ethernet) || (nic.NetworkInterfaceType == NetworkInterfaceType.Wireless80211)) //&& (nic.OperationalStatus == OperationalStatus.Up)) 
     { 
      comboBoxLanInternet.Items.Add(nic.Description); 
     } 
    } 
} 

を、そのうちの一つを選択する場合、このコードは、インターフェイスのIPアドレスを返します。

private void comboBoxLanInternet_SelectedIndexChanged(object sender, EventArgs e) 
{ 
    foreach (NetworkInterface nic in NetworkInterface.GetAllNetworkInterfaces()) 
    { 
     foreach (UnicastIPAddressInformation ip in nic.GetIPProperties().UnicastAddresses) 
     { 
      if (nic.Description == comboBoxLanInternet.SelectedItem.ToString()) 
      { 
       if (ip.Address.AddressFamily == System.Net.Sockets.AddressFamily.InterNetwork) 
       { 
        MessageBox.Show(ip.Address.ToString()); 
       } 
      } 
     } 
    } 
} 
関連する問題