4

ping に応答しない Web サイトの IP アドレスを取得しようとしています -- タイムアウトになります。

Windows のコマンド入力画面ではなく、C# アプリケーションからこれを実行しようとしています。一部のサイトでタイムアウトする ping コマンドを使用しているため、そこでは役に立ちません。

サイトが応答する必要のないこの情報を取得する別の方法はありますか?

4

9 に答える 9

6

サイトが PING に応答しない (サーバーで ICMP が有効になっていない、またはファイアウォールによってフィルター処理されていない) 場合でも、PING コマンドはサイト名を IP アドレスに解決し、その IP アドレスをユーザーに表示する必要があります。

Windows での ping コマンドの出力を確認します (太字の IP アドレス)。

ping wikipedia.org

wikipedia.org [208.80.152.2]に 32 バイトで ping を実行 o
208.80.152.2 からの返信: バイト = 32 時間 = 245 ミリ秒 TTL = 50
208.80.152.2 からの返信: バイト = 32 時間 = 235 ミリ秒 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 アドレスが返されます。

サイトの IP アドレスを取得するためにサイトに ping を実行する必要がある理由はありません。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 に答える