使用具有已知IP端点的System.Net.WebRequest

Rea*_*lar 1 c# sockets dns

我有一大堆已经解析为IP地址的DNS名称.有了这个集合,我需要从他们那里下载HTML.这是一个非常大的列表,我需要尽可能高效地完成它.

我正在使用System.Net.HttpWebRequest从每个域下载HTML.HttpWebRequest正在重复DNS查找,这增加了连接时间.我已经运行测试,看看端口80上的那些IP的套接字是否能够更快地连接,而且确实如此.

所以我想使用已知IP地址的HttpWebRequest,但我不知道如何.所有WebRequest工厂方法都需要URL.

现在我想我可以做这样的事情(其中1.2.3.4是IP)

var req = WebRequest.Create("http://1.2.3.4/");
req.Headers.Add(....); <-- add something here
Run Code Online (Sandbox Code Playgroud)

我需要以某种方式向HTTP头添加目标域的内容,但我不知道该怎么做.

ruf*_*nov 5

很简单:

var ip = "93.184.216.119";
var host = "example.com";
var ipUri = new UriBuilder(Uri.UriSchemeHttp, ip).Uri;

var request = WebRequest.CreateHttp(ipUri);
request.Host = host;

using (var response = request.GetResponse())
{
    // do something with response
}
Run Code Online (Sandbox Code Playgroud)