通过HttpWebRequest检索URL时,是否可以看到目标服务器的IP地址?

时间:2009-09-02 02:31:31

标签: httpwebrequest dns ip-address httpwebresponse

假设我正在检索网址,如下所示:

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

有没有办法可以看到目标网址的IP地址? 是否需要单独拨打电话?

由于

2 个答案:

答案 0 :(得分:6)

虽然Dns.GetHostEntry()可以获得服务器的IP,但是如果同一主机有多个A记录,您将全部获取它们(也称为循环DNS)。但是,当实际连接到Web服务器时,客户端会选择其中一个IP。

似乎没有一种公开的方法可以确切地找出连接时使用的IP。我在www.justwentdown.com处理我们的网络监控解决方案时发现了这些信息。此信息位于Web响应的私有字段中,

myHttpWebResponse.ResponseStream.Connection.ServerAddress

但是,由于ConnectionServerAddress是私有/内部属性,因此您需要使用反射来获取值。我发现this solution在这些情况下非常有用。

我用.NET 4.0测试过它。它有点乱,可能会破坏.NET的未来版本,所以我建议添加一个单元测试。

答案 1 :(得分:1)

查看System.Net.Dns类。您可以从Dns.GetHostEntry()方法获取主机的IP地址列表。