通过c#获取IP地址(IPv4值)

时间:2012-08-09 09:22:17

标签: c# networking ip

  

可能重复:
  Get IPv4 addresses from Dns.GetHostEntry()

我尝试使用以下代码获取我的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]) + "\r\n";
           }
           catch
           {
               ipLabel.Text += "IP Address            | " + "\r\n";
           }
      }
}
catch
{
     //richTextBox1.Text += "Hostname             | " + "\r\n";
}

2 个答案:

答案 0 :(得分:3)

try
           {
               ipLabel.Text += Convert.ToString(addr[i]) + ";";
           }

由于在Windows 7中启用了IPv6,它将同时返回IPv4和IPv6,并且您的循环正在删除一些值。

答案 1 :(得分:1)

试试这个,

 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();