C# 获取分配给服务器的所有IP

C# 获取分配给服务器的所有IP,c#,.net,dns,wmi,C#,.net,Dns,Wmi,我在回答这个问题时遇到了一个代码片段: 使用系统; Net系统; 名称空间控制台测试 { 班级计划 { 静态void Main() { String strHostName=String.Empty; //正在获取本地计算机的Ip地址。。。 //首先获取本地计算机的主机名。 strHostName=Dns.GetHostName(); Console.WriteLine(“本地计算机的主机名:+strHostName”); //然后使用主机名获取IP地址列表。。 IPHostEntry i

我在回答这个问题时遇到了一个代码片段:

使用系统;
Net系统;
名称空间控制台测试
{ 
班级计划
{ 
静态void Main()
{ 
String strHostName=String.Empty;
//正在获取本地计算机的Ip地址。。。
//首先获取本地计算机的主机名。
strHostName=Dns.GetHostName();
Console.WriteLine(“本地计算机的主机名:+strHostName”);
//然后使用主机名获取IP地址列表。。
IPHostEntry ipEntry=Dns.GetHostEntry(strHostName);
IPAddress[]addr=ipEntry.AddressList;
for(int i=0;i
当我在本地运行该代码以获取计算机的IP地址时,该代码工作正常。我试图做的是使用代码获取网络上服务器的IP地址。所以基本上我尝试替换strHostName=Dns.GetHostName();使用strHostName=“myServerName”;但它只返回一个IP。当我在服务器上运行程序时,我会得到分配给该服务器的所有IP。目标是在我的计算机上运行该程序,从数据库表中读取服务器名称,以获得100多台服务器上的IP地址。我试图避免登录到每台服务器并在每台服务器上运行程序来获取IP地址

有趣的是,“www.google.com”的代码运行良好-这是与服务器相关的还是安全问题


在开始从数据库获取数据之前,我需要让代码为一台服务器工作:)希望这能更好地解释它。谢谢

可能是服务器故意将其他IP从DNS中排除。可以找到此功能的一个很好的示例

尝试
GetHostAddress()
,并验证是否得到相同的结果。见MSDN:


如果做不到这一点,您可能需要研究查询IP地址的其他方法

您是否混淆了DNS对您正试图使用这些方法解析的名称的描述与找出哪些IP地址实际绑定到您感兴趣的特定机器上运行的TCP/IP协议栈之间的区别?如果您想知道计算机实际配置的IP地址是什么,而不管DNS中可能注册或可能未注册什么,则需要查看使用WMI枚举计算机上配置的地址

见第条:

在上面的代码中,您只需要求运行代码的本地计算机使用其配置的DNS解析程序,并告诉您哪些条目作为用于查询的名称的DNS记录存在。这就是为什么当您尝试查询www.google.com之类的内容时,可以得到一个值。这是因为您只是在DNS中查找一个名称,并且由于该名称是可公开识别的名称,因此任何正确设置的DNS服务器都将能够报告一个有效值


这与可能绑定到服务器的IP地址非常不同。例如,设想一个位于防火墙后面的服务器。服务器实际上可能正在使用内部网络本地的IP地址,这些地址映射到防火墙上可公开访问的IP地址。在这种情况下,服务器知道的IP地址与相应DNS条目中显示的公共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(); 
        } 
    } 
}