Преобразовать имя хоста только в один IP-адрес - PullRequest
0 голосов
/ 28 декабря 2018

Я хочу создать имя хоста в IP-адрес и наоборот.Однако у меня возникла проблема, при которой 1 имя хоста возвращает 2 IP-адреса, и когда я преобразовываю IP-адрес в имя хоста, только один из них возвращает правильное имя хоста.

Пример преобразования CEGN5CG7260FR7.xxxxx.xxx, возвращается 192.168.X.XX и10.132.XXX.XXX, но при обратном преобразовании в имя хоста только 10.132.XXX.XXX возвращает правильное имя хоста.

Этот фрагмент кода для преобразования имени хоста в IP-адрес: -

// Convert hostname to IP address
            IPHostEntry host = Dns.GetHostEntry(hostList[i]);
            IPAddress[] ipaddr = host.AddressList;
            // Loop through the IP Address array and add the IP address to IP List
            foreach (IPAddress addr in ipaddr)
            {
                if (addr.AddressFamily == System.Net.Sockets.AddressFamily.InterNetwork)
                {
                     ipList.Add(addr.ToString());
                }
            }
            // Display items in IP Address textbox
            foreach (var ip in ipList)
            {
                ips += ip + Environment.NewLine;
            }
            txtIP.Text = ips;

Этот фрагмент кода для преобразованияIP-адрес для имени хоста: -

// Convert IP address to hostname
            IPHostEntry IP = Dns.GetHostEntry(IPAddress.Parse(ip));
            if (IP != null)
            {
                 hostList.Add(IP.HostName);
            }
            // Display items in Hostname textbox
            foreach (var hn in hostList)
            {
                hosts += hn + Environment.NewLine;
            }
            txtHost.Text = hosts;

Что я могу сделать, чтобы только получить и отобразить 10.132.XXX.XXX IP-адрес и игнорировать первый?

1 Ответ

0 голосов
/ 28 декабря 2018

Вы можете попробовать этот код, чтобы найти правильный IP-адрес.

 public static string GetLocalIPAddress()
    {
        var host = Dns.GetHostEntry(Dns.GetHostName());
        foreach (var ip in host.AddressList)
        {
            if (ip.AddressFamily == AddressFamily.InterNetwork)
            {
                return ip.ToString();
            }
        }
        throw new Exception("No network adapters with an IPv4 address in the system!");
    }
...