4

我正在尝试获取不响应 ping 的网站的 IP 地址——它们超时。

我正在尝试从 C# 应用程序而不是 Windows 中的命令输入屏幕执行此操作。我一直在使用 ping 命令,该命令在某些站点上超时,因此在那里没有用。

是否有另一种不需要网站响应的方式来获取这些信息?

4

9 回答 9

6

即使站点不响应 PING(服务器上未启用 ICMP 或被防火墙过滤),PING 命令仍应将站点名称解析为 IP 地址并向您显示该 IP 地址。

检查 Windows 上 ping 命令的输出(以粗体显示的 ip 地址):

ping wikipedia.org

ping wikipedia.org [208.80.152.2] 32 字节 o
来自 208.80.152.2 的回复:字节=32 时间=245ms TTL=50
来自 208.80.152.2 的回复:字节=32 时间=235ms TTL=50

更新(由于更新的问题)

如果您尝试从 C# 应用程序获取 DNS 名称的 IP 地址,则应使用 Dns 类中的 GetHostEntry 方法:http: //msdn.microsoft.com/en-us/library/ms143998.aspx

于 2010-12-29T16:31:16.233 回答
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

于 2010-12-29T16:31:27.107 回答
2

Dns.GetHostEntry()中的主机名获取 IP 地址。传入主机名,它将返回您的 IP 地址。

您没有理由需要 ping(无论如何联系)站点来获取它的 IP 地址。DNS 查找将为您提供所需的信息。

于 2010-12-30T01:48:52.980 回答
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);
    } 
于 2010-12-30T18:56:39.850 回答
1

您可以使用 nslookup 来解析域名。

nslookup google.com

于 2010-12-29T16:35:28.000 回答
0

您可以使用tracert,它会解析IP地址并告诉您是否可以到达或停止在哪里。

于 2010-12-29T16:32:18.750 回答
0

如果站点 (http) 已启动并正在运行,那么很明显 sys/network 管理员禁用了 ping 并且很可能也禁用了跟踪路由实用程序。现在越来越普遍了。见这里。您的替代方法是使用 ns 查找或 WHOIS 服务,如此处所述

于 2010-12-29T17:06:36.607 回答
0

在代码中执行此操作,您应该有一些类似 gethostbyname() 的函数。

这应该在 stackoverflow.com 上

于 2010-12-30T01:21:17.637 回答
0

未经测试

你可以托管这个网站

http://centralops.net/co/DomainDossier.aspx

您可以使用 import.io 使网站具有功能性。

https://www.import.io/

此链接可以让您深入了解

于 2017-01-20T07:08:46.943 回答