可能的重复项:
从 Dns.GetHostEntry() 获取 IPv4 地址
我尝试以下代码来获取我的 IP 地址,在 XP 中,它返回 IP 地址 V4 格式,但是当我在我的系统(Windows 7)中执行此操作时,它会以v6格式返回IP地址。
如何解决这个问题?
法典
try
{
//iphostname = Dns.GetHostName(); // Resolving Host name
IPHostEntry ipentry = Dns.GetHostEntry(hostLabel.Text);
IPAddress[] addr = ipentry.AddressList;// Resolving IP Addresses
for (int i = 0; i < addr.Length; i++)
{
try
{
ipLabel.Text = Convert.ToString(addr[i]) + "rn";
}
catch
{
ipLabel.Text += "IP Address | " + "rn";
}
}
}
catch
{
//richTextBox1.Text += "Hostname | " + "rn";
}
try
{
ipLabel.Text += Convert.ToString(addr[i]) + ";";
}
由于在 Windows 7 中启用了 IPv6,它将同时返回 IPv4 和 IPv6,并且您的循环正在擦除一些值。
试试这个,
string strHostName = "";
strHostName = System.Net.Dns.GetHostName();
IPHostEntry ipEntry = System.Net.Dns.GetHostEntry(strHostName);
IPAddress[] addr = ipEntry.AddressList;
ipLabel.Text = addr[addr.Length - 2].ToString();