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