1

重複の可能性:
Dns.GetHostEntry()からIPv4アドレスを取得する

次のコードを使用してIPアドレスを取得しようとすると、XPではIPアドレスがV4形式で返されますが、システム(Windows 7)で実行すると、IPアドレスがv6形式で返されます。

これを解決するにはどうすればよいですか?

コード

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

2 に答える 2

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

IPv6はWindows7で有効になっているため、IPv4とIPv6の両方が返され、ループによっていくつかの値が消去されます。

于 2012-08-09T09:30:34.460 に答える
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();
于 2012-08-09T09:44:52.873 に答える