C#でWebRequestに応答したIPアドレス(ホスト名ではない)を見つけようとしています。DNS解決を行いたくないのは、返されるDNSレコードが、要求に応答するサーバーではない場合だからです。例:
クライアント->ロードバランサー->Webサーバー
DNSサーバーは、ロードバランサーのIPで応答します。応答するWebサーバーがロードバランサーを経由しないと仮定すると、IPアドレスは、私が見つけようとしている実際のWebサーバーになります。
C#でWebRequestに応答したIPアドレス(ホスト名ではない)を見つけようとしています。DNS解決を行いたくないのは、返されるDNSレコードが、要求に応答するサーバーではない場合だからです。例:
クライアント->ロードバランサー->Webサーバー
DNSサーバーは、ロードバランサーのIPで応答します。応答するWebサーバーがロードバランサーを経由しないと仮定すると、IPアドレスは、私が見つけようとしている実際のWebサーバーになります。
OSIに浸り、独自のソケットを作成して利用する必要があると思います。
そうすれば、次のようにRemoteEndPointプロパティにアクセスできるようになります(少なくともソケットが接続された後、または接続された後)。
Socket sprocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
sprocket.Connect("www.google.com", 80);
string IPAddressOfRespondingServer = ((IPEndPoint)sprocket.RemoteEndPoint).Address.ToString();
サーバー側のコードにアクセスできますか? またはWebサーバーの設定に?マシンの IP または任意の識別子をいつでもカスタム ヘッダーに配置し、クライアントでそれを探すことができます。
元の質問に関しては、HttpWebRequest/HttpWebResponse クラスによって情報がどこにも公開されているとは思いません。