我正在尝试获取一个不响应ping的网站的IP地址 - 它们超时。
我正在尝试从C#应用程序而不是Windows中的命令输入屏幕执行此操作。我一直在使用ping命令,它在某些网站上超时,所以它在那里没用。
是否有其他方法可以获取不需要网站响应的信息?
答案 0 :(得分:6)
即使站点没有响应PING(ICMP未在服务器上启用或由防火墙过滤),PING命令仍应将站点名称解析为IP地址并显示该IP地址。
检查Windows上ping命令的输出(以粗体显示的ip地址):
ping wikipedia.org
使用32个字节ping wikipedia.org [208.80.152.2]
来自208.80.152.2的回复:bytes = 32 time = 245ms TTL = 50
来自208.80.152.2的回复:bytes = 32 time = 235ms TTL = 50
更新(由于更新的问题)
如果您尝试从C#应用程序获取DNS名称的IP地址,则应使用Dns类中的GetHostEntry方法:http://msdn.microsoft.com/en-us/library/ms143998.aspx。
答案 1 :(得分:3)
您从DNS获取IP,并且需要它来执行ping,因此您已经拥有它。
$ ping google.com
PING google.com (74.125.227.51) 56(84) bytes of data.
64 bytes from 74.125.227.51: icmp_seq=0 ttl=56 time=5.80 ms
64 bytes from 74.125.227.51: icmp_seq=1 ttl=56 time=6.23 ms
显示IP。如果您没有获得IP,您的DNS可能会关闭。
您还可以尝试nslookup google.com
答案 2 :(得分:2)
从Dns.GetHostEntry()中的主机名获取IP地址。传入主机名,它将返回IP地址。
您无需ping(无论如何联系)某个站点以获取其IP地址。 DNS查找将为您提供所需的信息。
答案 3 :(得分:1)
您可以使用nslookup解析域名。
nslookup google.com
答案 4 :(得分:1)
以下代码可用于为提供的主机名执行DNS查找。
使用DNS将绕过访问目标服务器。它是一个独立的分布式目录服务,它将主机名维护为IP地址查找。
如果可以为提供的主机名解析DNS条目,则以下代码将为主机提供第一个返回的IP地址。
public void test()
{
string hostname = "google.com";
IPAddress ipAdress;
if (TryGetIpAddress(hostname, out ipAdress))
{
Console.WriteLine("Host:'{0}', IP:{1}.", hostname, ipAdress);
}
else
{
Console.WriteLine("Host '{0}' not found.", hostname);
}
}
public bool TryGetIpAddress(string hostname, out IPAddress ipAddress)
{
const int HostNotFound = 11001;
ipAddress = null;
try
{
IPHostEntry hostEntry = Dns.GetHostEntry(hostname);
ipAddress = hostEntry.AddressList[0];
}
catch (SocketException ex)
{
if (ex.ErrorCode != HostNotFound) throw;
}
return (ipAddress != null);
}
答案 5 :(得分:0)
您可以使用tracert,它将解析IP地址并告诉您是否可以到达或停止它。
答案 6 :(得分:0)
如果站点(http)启动并运行,那么很明显sys / network admin禁用ping并且很可能也跟踪路由实用程序。它现在变得非常普遍。见here。您可以选择使用ns {查询或WHOIS服务,如here
所述答案 7 :(得分:0)
在代码中执行此操作时,您应该使用gethostbyname()等函数。
这应该在stackoverflow.com上
答案 8 :(得分:0)