【问题标题】:Getting local host Ip Address [duplicate]获取本地主机IP地址[重复]
【发布时间】:2014-06-01 11:23:43
【问题描述】:
public static string GetLocalIpAddress()
    {
        string hostName = Dns.GetHostName();
        IPHostEntry ip = Dns.GetHostEntry(hostName);
        string IpAddress = Convert.ToString(ip.AddressList[2]);
        return IpAddress.ToString();
    }

这有时会显示 Index out of bound 异常 应该是什么问题。? 提前致谢

【问题讨论】:

  • ip.AddressList[2]。您需要检查列表中有多少元素。
  • 发生错误是因为数组索引2 > ip.AddressList.Length

标签: c# ip


【解决方案1】:

试试这个方法,对我有用。

 public static string GetIPAddress()
    {
        IPHostEntry host;
        string localIP = "?";
        host = Dns.GetHostEntry(Dns.GetHostName());
        foreach (IPAddress ip in host.AddressList)
        {
            if (ip.AddressFamily == AddressFamily.InterNetwork)
            {
                localIP = ip.ToString();
            }
        }
        return localIP;
    }

谢谢,

【讨论】:

    【解决方案2】:
    foreach (var addr in Dns.GetHostEntry(string.Empty).AddressList)
    {
    if (addr.AddressFamily == AddressFamily.InterNetwork)
    Console.WriteLine("IPv4 Address: {0}", addr)
    }
    

    【讨论】:

      【解决方案3】:

      正如他们之前回答的那样。您应该检查地址列表上的长度。因为它并不总是 2。

      这里有关于 stackoverflow 的另一个答案: Getting valid IP from IPHostEntry

      【讨论】:

        猜你喜欢
        • 2012-07-28
        • 2012-04-12
        • 2017-02-02
        • 1970-01-01
        • 2013-08-19
        • 2014-06-09
        • 2012-05-31
        • 2017-10-31
        相关资源
        最近更新 更多