我在这个答案上遇到了一个代码片段:在控制台应用程序中获取IP地址
using System;
using System.Net;
namespace ConsoleTest
{
class Program
{
static void Main()
{
String strHostName = string.Empty;
// Getting Ip address of local machine...
// First get the host name of local machine.
strHostName = Dns.GetHostName();
Console.WriteLine("Local Machine's Host Name: " + strHostName);
// Then using host name, get the IP address list..
IPHostEntry ipEntry = Dns.GetHostEntry(strHostName);
IPAddress[] addr = ipEntry.AddressList;
for (int i = 0; i < addr.Length; i++)
{
Console.WriteLine("IP Address {0}: {1} ", i, addr[i].ToString());
}
Console.ReadLine();
}
}
}
Run Code Online (Sandbox Code Playgroud)
当我在本地运行它以获取我的计算机的IP地址时,此代码工作正常.我要做的是使用代码获取网络服务器上的IP地址.所以基本上我尝试替换strHostName = Dns.GetHostName(); strHostName ="myServerName"; 但它只返回一个IP.当我在服务器上运行程序时,我获得了分配给该服务器的所有IP.目标是在我的计算机上运行程序,从数据库表中读取服务器名称以获取超过100台服务器上的IP地址.我试图避免必须登录到每个服务器并在每个服务器上运行程序以获取IP地址.
有趣的是,代码适用于"www.google.com" - 这个服务器是相关的还是安全问题?
在我开始从数据库中获取数据之前,我需要让代码适用于一台服务器:)希望能更好地解释它.谢谢!
可能是服务器故意将其他 IP 排除在 DNS 之外。可以在此知识库文章 (975808) 中找到此功能的一个很好的示例。
尝试GetHostAddress()并验证您是否得到相同的结果。请参阅 MSDN:gethostaddress()
如果做不到这一点,您可能需要研究其他方法来查询 IP 地址。