Получить IP-адрес и описание адаптера с помощью C#
у меня возникла проблема с синхронизацией "IP-адреса и описания".
задача такая:
получить IP-адрес и что такое описание?
пример:
| Atheros Azx1234 Wireless Adapter |
|192.168.1.55 |
но результат не такой, как я ожидал...
Это мой код, не стесняйтесь попробовать...
private void button1_Click(object sender, EventArgs e)
{
NetworkInterface[] interfaces = NetworkInterface.GetAllNetworkInterfaces();
IPHostEntry host;
host = Dns.GetHostEntry(Dns.GetHostName());
foreach (NetworkInterface adapter in interfaces)
{
foreach (IPAddress ip in host.AddressList)
{
if ((adapter.OperationalStatus.ToString() == "Up") && // I have a problem with this condition
(ip.AddressFamily == AddressFamily.InterNetwork))
{
MessageBox.Show(ip.ToString(), adapter.Description.ToString());
}
}
}
}
Как я могу исправить эту проблему?
1 ответов
проблема в вашем коде заключается в том, что вы не используете связанные IP-адреса для данного адаптера. Вместо сопоставления всех IP-адресов каждому адаптеру использовать только IP-адреса, связанные с текущим адаптером:
NetworkInterface[] interfaces = NetworkInterface.GetAllNetworkInterfaces();
foreach (var adapter in interfaces)
{
var ipProps = adapter.GetIPProperties();
foreach (var ip in ipProps.UnicastAddresses)
{
if ((adapter.OperationalStatus == OperationalStatus.Up)
&& (ip.Address.AddressFamily == AddressFamily.InterNetwork))
{
Console.Out.WriteLine(ip.Address.ToString() + "|" + adapter.Description.ToString());
}
}
}