2

假设我正在检索一个 url,如下所示:

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

有没有办法可以查看目标网址的 IP 地址?是否需要单独调用?

谢谢

4

2 回答 2

6

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

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

myHttpWebResponse.ResponseStream.Connection.ServerAddress

但是,因为ConnectionandServerAddress是私有/内部属性,您需要使用反射来获取值。我发现这个解决方案在这些情况下非常有用。

我已经使用 .NET 4.0 对其进行了测试。这有点混乱,可能会与 .NET 的未来版本中断,所以我建议添加一个单元测试。

于 2011-11-06T17:02:24.503 回答
1

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

于 2009-09-02T02:40:40.653 回答