ping に応答しない Web サイトの IP アドレスを取得しようとしています -- タイムアウトになります。
Windows のコマンド入力画面ではなく、C# アプリケーションからこれを実行しようとしています。一部のサイトでタイムアウトする ping コマンドを使用しているため、そこでは役に立ちません。
サイトが応答する必要のないこの情報を取得する別の方法はありますか?
サイトが 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。
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
Dns.GetHostEntry()でホスト名から IP アドレスを取得します。ホスト名を渡すと、IP アドレスが返されます。
サイトの IP アドレスを取得するためにサイトに ping を実行する必要がある理由はありません。DNS ルックアップにより、必要なものが得られます。
次のコードを使用して、指定されたホスト名の 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);
}
nslookup を使用してドメイン名を解決できます。
nslookup google.com
tracert を使用すると、IP アドレスが解決され、到達できるかどうか、またはどこで停止するかがわかります。
サイト (http) が稼働している場合、sys/network 管理者が ping を無効にし、おそらくトレース ルート ユーティリティも無効にしていることは明らかです。今では非常に一般的になっています。ここを参照してください。別の方法として、こちらで説明されているように、ns ルックアップまたは WHOIS サービスを使用します。
コードでこれを行うには、gethostbyname() のような関数が必要です。
これはstackoverflow.comにあるはずです
テストされていない
このウェブサイトをホストできます
http://centralops.net/co/DomainDossier.aspx
import.io を使用してサイトを機能させることができます。
このリンクはあなたに洞察を与えるかもしれません