首页>Program>source

我这里有一些代码在IPv4机器上很好用,但是在我们的构建服务器(IPv6)上却失败了.简而言之:

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

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

从其他任何IPv4机器上对机器进行ping操作会提供一个良好的IPv4地址...并执行 "ping -4 machinename" 本身会给出正确的IPv4地址...。但是定期从自身ping会得到" :: 1:"。

如何从本机获取此机器的IPv4?

最新回答
  • 2021-1-12
    1 #

    您是否查看了退货中的所有地址,丢弃了InterNetworkV6系列的地址,仅保留了IPv4地址?

  • 2021-1-12
    2 #

    要查找所有本地IPv4地址:

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

    或使用 Array.FindArray.FindLast 如果您只想要一个。

  • 2021-1-12
    3 #

    IPHostEntry ipHostInfo = Dns.GetHostEntry(serverName);
    IPAddress ipAddress = ipHostInfo.AddressList
        .FirstOrDefault(a => a.AddressFamily == AddressFamily.InterNetwork);
    

  • 2021-1-12
    4 #

       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 并以任何形式使用该函数。

  • 2021-1-12
    5 #

       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;
        }
    

  • base64:带有Android的Apache Commons Codec:找不到方法
  • r:如何用逗号作为小数点分隔符读取数字?