Как получить сетевой интерфейс и его правый IPv4-адрес?

Мне нужно знать, как получить все сетевые интерфейсы с их IPv4- адресом. Или просто беспроводной и Ethernet.

Чтобы получить информацию о всех сетевых интерфейсах, я использую следующее:

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?

 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 – это IP-адрес, который вы хотите.

С некоторым улучшением этот код добавляет любой интерфейс к комбинации:

 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()); } } } } } 
Interesting Posts
Давайте будем гением компьютера.