【问题标题】:When retrieving URL via HttpWebRequest, can I see the IP address of the destination server?通过 HttpWebRequest 检索 URL 时,我可以看到目标服务器的 IP 地址吗?
【发布时间】:2010-11-24 20:01:36
【问题描述】:
假设我正在检索如下网址:
string url = "http://www.somesite.com/somepage.html"
HttpWebRequest req = (HttpWebRequest)WebRequest.Create(url);
HttpWebResponse resp = (HttpWebResponse)req.GetResponse();
有没有办法可以查看目标网址的 IP 地址?
需要单独调用吗?
谢谢
【问题讨论】:
标签:
httpwebrequest
dns
ip-address
httpwebresponse
【解决方案1】:
虽然Dns.GetHostEntry() 可以为您获取服务器的IP,但如果同一主机有多个A 记录,您将全部获取它们(也称为循环DNS)。但是,当实际连接到 Web 服务器时,客户端会选择其中一个 IP。
似乎没有公开的方法可以准确地找出连接时使用的 IP。我在www.justwentdown.com 处理我们的网络监控解决方案时发现了这些信息。此信息位于 Web 响应的私有字段中,
myHttpWebResponse.ResponseStream.Connection.ServerAddress
但是,由于 Connection 和 ServerAddress 是私有/内部属性,您需要使用反射来获取值。我发现this solution 在这些情况下非常有用。
我已经使用 .NET 4.0 对其进行了测试。这有点混乱,可能会与 .NET 的未来版本中断,所以我建议添加一个单元测试。