首页 > 代码库 > C# 从众多网卡中获取本地物理网卡的ip

C# 从众多网卡中获取本地物理网卡的ip

 1         /// <summary> 2         /// 获取本机物理网卡的ip 3         /// </summary> 4         /// <returns></returns> 5         public static string IPAddress() 6         { 7             string userIP = ""; 8             System.Net.NetworkInformation.NetworkInterface[] fNetworkInterfaces = System.Net.NetworkInformation.NetworkInterface.GetAllNetworkInterfaces(); 9             foreach (System.Net.NetworkInformation.NetworkInterface adapter in fNetworkInterfaces)10             {11                 string fRegistryKey = "SYSTEM\\CurrentControlSet\\Control\\Network\\{4D36E972-E325-11CE-BFC1-08002BE10318}\\" + adapter.Id + "\\Connection";12                 Microsoft.Win32.RegistryKey rk = Microsoft.Win32.Registry.LocalMachine.OpenSubKey(fRegistryKey, false);13                 if (rk != null)14                 {15                     // 区分 PnpInstanceID      16                     // 如果前面有 PCI 就是本机的真实网卡          17                     string fPnpInstanceID = rk.GetValue("PnpInstanceID", "").ToString();18                     int fMediaSubType = Convert.ToInt32(rk.GetValue("MediaSubType", 0));19                     if (fPnpInstanceID.Length > 3 &&20                     fPnpInstanceID.Substring(0, 3) == "PCI")21                     {22                         //string fCardType = "物理网卡";23                         System.Net.NetworkInformation.IPInterfaceProperties fIPInterfaceProperties = adapter.GetIPProperties();24                         System.Net.NetworkInformation.UnicastIPAddressInformationCollection UnicastIPAddressInformationCollection = fIPInterfaceProperties.UnicastAddresses;25                         foreach (System.Net.NetworkInformation.UnicastIPAddressInformation UnicastIPAddressInformation in UnicastIPAddressInformationCollection)26                         {27                             if (UnicastIPAddressInformation.Address.AddressFamily == System.Net.Sockets.AddressFamily.InterNetwork)28                                 userIP = UnicastIPAddressInformation.Address.ToString(); // Ip 地址     29                         }30                         break;31                     }32 33                 }34             }35             return userIP;36         }