如何获取响应WebResponse的服务器IP地址 C#

3

我正在尝试找到在C#中响应我的WebRequest的IP地址(而不是主机名)。我不想进行DNS解析,因为有些情况下DNS记录返回的不是响应请求的服务器。例如:

客户端 -> 负载均衡器 -> Web服务器

DNS服务器将响应负载均衡器的IP。假设响应的Web服务器没有经过负载均衡器,则IP地址将是实际的Web服务器,这就是我要查找的内容。


为什么需要这样做?例如,如果服务器有多个IP地址,你会怎么做? - John Saunders
2个回答

1
你有访问服务器端代码的权限吗?或者可以访问Web服务器配置吗?你可以在自定义头中放置机器IP或任何标识符,并在客户端查找它。
至于你最初的问题,我不认为HttpWebRequest/HttpWebResponse类在任何地方公开该信息。

很抱歉,我没有这个功能,否则这将是一个很好的选择。 - Traderde

1

我认为你需要进行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();


这将是连接另一端的IP地址,不一定是请求响应的IP地址 - 在代理服务器或负载均衡器涉及的情况下可能会有所不同。 - John Saunders
我想你说得对...嗯...我想我会支持您的,也就是mrSaunders的评论来回答这个问题;为什么呢? 不过我很感兴趣想看看如何完成这个操作。 是否有一种无需在连接的两端进行“调整”数据包或其他操作的方式,就可以确保通过所讨论的方法获取IP地址? - Morten Bergfall

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接