代码之家  ›  专栏  ›  技术社区  ›  zombat

从Dns.GetHostEntry()获取IPv4地址

  •  45
  • zombat  · 技术社区  · 15 年前

    IPHostEntry ipHostEntry = Dns.GetHostEntry(string.Empty);
    

    GetHostEntry的文档说明传入string.Empty将获得本地主机的IPv4地址。这就是我想要的。问题是它返回的字符串是“::1:”在我们的IPv6机器上,我相信这就是IPv6地址。

    从任何其他IPv4计算机ping该计算机会提供良好的IPv4地址。。。做一个 “ping-4机器名” 从自身提供正确的IPv4地址。。。。但是,定期从自身ping它会得到:“1:”。

    7 回复  |  直到 15 年前
        1
  •  66
  •   Remus Rusanu    15 年前
        2
  •  47
  •   Gary    13 年前

    IPAddress[] ipv4Addresses = Array.FindAll(
        Dns.GetHostEntry(string.Empty).AddressList,
        a => a.AddressFamily == AddressFamily.InterNetwork);
    

    或使用 Array.Find Array.FindLast

        3
  •  10
  •   Milan Å vec    8 年前
    IPHostEntry ipHostInfo = Dns.GetHostEntry(serverName);
    IPAddress ipAddress = ipHostInfo.AddressList
        .FirstOrDefault(a => a.AddressFamily == AddressFamily.InterNetwork);
    
        4
  •  6
  •   Brandon    12 年前
        public Form1()
        {
            InitializeComponent();
    
            string myHost = System.Net.Dns.GetHostName();
            string myIP = null;
    
            for (int i = 0; i <= System.Net.Dns.GetHostEntry(myHost).AddressList.Length - 1; i++)
            {
                if (System.Net.Dns.GetHostEntry(myHost).AddressList[i].IsIPv6LinkLocal == false)
                {
                    myIP = System.Net.Dns.GetHostEntry(myHost).AddressList[i].ToString();
                }
            }
        }
    

    在公共变量中声明myIP和myHost

        5
  •  2
  •   Ronald van Zoelen    10 年前
        public static string GetIPAddress(string hostname)
        {
            IPHostEntry host;
            host = Dns.GetHostEntry(hostname);
    
            foreach (IPAddress ip in host.AddressList)
            {
                if (ip.AddressFamily == System.Net.Sockets.AddressFamily.InterNetwork)
                {
                    //System.Diagnostics.Debug.WriteLine("LocalIPadress: " + ip);
                    return ip.ToString();
                }
            }
            return string.Empty;
        }
    
        6
  •  0
  •   Ravi Shankar    11 年前

    要查找所有有效的地址列表,这是我使用的代码

    public static IEnumerable<string> GetAddresses()
    {
          var host = Dns.GetHostEntry(Dns.GetHostName());
          return (from ip in host.AddressList where ip.AddressFamily == AddressFamily.lo select ip.ToString()).ToList();
    }
    
        7
  •  -4
  •   not nor    9 年前

    IPv6


    IPv4

    lblIP.Text=System.Net.Dns.GetHostEntry(System.Net.Dns.GetHostName).AddressList(1).ToString()