【发布时间】:2019-05-26 03:14:42
【问题描述】:
我想创建主机名到 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 地址而忽略第一个?
【问题讨论】:
-
var ip = ipList.FirstOrDefault(v => v.StartsWith("10.132"))? O:) -
恐怕只会接受那些以
10.132.开头的人还有一个以172.21开头的ip列表等等。 -
另一个主机名的输出是什么?是空白还是其他值?
-
不太清楚为什么要忽略其他 IP 地址。如果您只想要来自特定子网的 IP 地址,那么 John 的回答就足够了。否则你可以拿第一个。
-
然后您需要检查所有 IP 并找到将解析回主机名的 IP。在我看来,忽略其他 IP 并不是一个很好的做法,尽管我不知道你为什么需要这个。
标签: c# winforms ip-address hostname