我试图在 C# 中找到响应我的 WebRequest 的 IP 地址(不是主机名)。我不想进行 DNS 解析,因为它们是返回的 DNS 记录不是响应请求的服务器的情况。例如:
客户端 -> 负载均衡器 -> Web 服务器
DNS 服务器将使用负载均衡器的 IP 进行响应。假设响应的 Web 服务器没有通过负载均衡器返回,那么 IP 地址将是我要查找的实际 Web 服务器。
我试图在 C# 中找到响应我的 WebRequest 的 IP 地址(不是主机名)。我不想进行 DNS 解析,因为它们是返回的 DNS 记录不是响应请求的服务器的情况。例如:
客户端 -> 负载均衡器 -> Web 服务器
DNS 服务器将使用负载均衡器的 IP 进行响应。假设响应的 Web 服务器没有通过负载均衡器返回,那么 IP 地址将是我要查找的实际 Web 服务器。
您可以访问服务器端代码吗?还是给web服务器配置?您始终可以将机器 IP 或您想要的任何标识符放在自定义标头中并在客户端上查找。
至于您最初的问题,我认为 HttpWebRequest/HttpWebResponse 类不会在任何地方公开信息。
我认为您必须进行 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();