• 获取本地IP


     1 public string GetLocalIP()
     2         {
     3             try
     4             {
     5                 // 无法处理存在VMware虚拟机的情况
     6                 //string HostName = Dns.GetHostName(); //得到主机名
     7                 //IPHostEntry IpEntry = Dns.GetHostEntry(HostName);
     8                 //for (int i = 0; i < IpEntry.AddressList.Length; i++)
     9                 //{
    10                 //    //从IP地址列表中筛选出IPv4类型的IP地址
    11                 //    //AddressFamily.InterNetwork表示此IP为IPv4,
    12                 //    //AddressFamily.InterNetworkV6表示此地址为IPv6类型
    13                 //    if (IpEntry.AddressList[i].AddressFamily == AddressFamily.InterNetwork)
    14                 //    {
    15                 //        return IpEntry.AddressList[i].ToString();
    16                 //    }
    17                 //}
    18 
    19                 // Get a list of all network interfaces (usually one per network card, dialup, and VPN connection) 
    20                 NetworkInterface[] networkInterfaces = NetworkInterface.GetAllNetworkInterfaces();
    21                 StringBuilder sb = new StringBuilder();
    22                 foreach (NetworkInterface network in networkInterfaces)
    23                 {
    24                     // 排除掉不可用的网络接口
    25                     if (network.OperationalStatus != OperationalStatus.Up)
    26                         continue;
    27 
    28                     // Read the IP configuration for each network 
    29                     IPInterfaceProperties properties = network.GetIPProperties();
    30 
    31                     // 排除掉没有网关的地址(VMware)
    32                     var gatewayAddr = properties.GatewayAddresses.FirstOrDefault();
    33                     if (gatewayAddr == null || gatewayAddr.Address.ToString().Equals("0.0.0.0"))
    34                         continue;
    35 
    36                     // Each network interface may have multiple IP addresses 
    37                     foreach (IPAddressInformation address in properties.UnicastAddresses)
    38                     {
    39                         // We're only interested in IPv4 addresses for now 
    40                         if (address.Address.AddressFamily != AddressFamily.InterNetwork)
    41                             continue;
    42 
    43                         // Ignore loopback addresses (e.g., 127.0.0.1) 
    44                         if (IPAddress.IsLoopback(address.Address))
    45                             continue;
    46 
    47                         return address.Address.ToString();
    48                     }
    49                 }
    50                 return "";
    51             }
    52             catch (Exception)
    53             {
    54                 return "";
    55             }
    56         }

    获取一个接口上有多个地址的代码

     1 public static string[] GetAllLocalIPv4(NetworkInterfaceType _type)
     2 {
     3     List<string> ipAddrList = new List<string>();
     4     foreach (NetworkInterface item in NetworkInterface.GetAllNetworkInterfaces())
     5     {
     6         if (item.NetworkInterfaceType == _type && item.OperationalStatus == OperationalStatus.Up)
     7         {
     8             foreach (UnicastIPAddressInformation ip in item.GetIPProperties().UnicastAddresses)
     9             {
    10                 if (ip.Address.AddressFamily == AddressFamily.InterNetwork)
    11                 {
    12                     ipAddrList.Add(ip.Address.ToString());
    13                 }
    14             }
    15         }
    16     }
    17     return ipAddrList.ToArray();
    18 }
  • 相关阅读:
    [From 3.1~3.4]
    [From 2.7]简单应用程序部署(程序集打包)
    [From 2.4]C#编译器和程序集链接器(以及一些它们的命令开关)
    [From 2.3]托管PE文件的组成
    [From 1.1~1.2]CLR的执行模型
    项目开发日志:Build AssetBundle——SpriteAtlas(已解惑)
    JDK所有版本下载链接
    Maven
    SEO优化
    Mysql字符集
  • 原文地址:https://www.cnblogs.com/s5689412/p/11347326.html
Copyright © 2020-2023  润新知