2009-09-02 13 views
2

は、次のように私は、URLを取得していたとしますHttpWebRequest経由でURLを取得する場合、宛先サーバーのIPアドレスを確認できますか?

string url = "http://www.somesite.com/somepage.html" 
HttpWebRequest req = (HttpWebRequest)WebRequest.Create(url); 
HttpWebResponse resp = (HttpWebResponse)req.GetResponse(); 

は、私が先URLのIPアドレスを見ることができる方法はありますか? 別途電話が必要ですか?

ありがとう

答えて

1

System.Net.Dnsクラスを見てください。ホストのIPアドレスのリストは、Dns.GetHostEntry()メソッドから取得できます。

6

Dns.GetHostEntry()でもサーバーのIPを取得できますが、同じホストの複数のAレコードがある場合は、すべてを取得します(ラウンドロビンDNSとも呼ばれます)。しかし、実際にWebサーバーに接続するとき、クライアントはそれらのIPの1つを選択します。

接続時にどのIPが使用されたかを正確に把握する方法はありません。この情報は、Webモニタリングソリューションのwww.justwentdown.comで作業中に見つかりました。 ConnectionServerAddressプライベート/内部プロパティであるため、この情報は、しかし

myHttpWebResponse.ResponseStream.Connection.ServerAddress 

、ウェブ応答のプライベートフィールドに位置しており、あなたが値を取得するためにリフレクションを使用する必要があります。私はthis solutionがそのような状況で非常に有用であることを発見しました。

.NET 4.0でテストしました。ちょっと面倒だし、.NETの将来のバージョンで壊れる可能性があるので、単体テストを追加することをお勧めします。

関連する問題