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

标签 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

我需要以某种方式将目标域添加到 HTTP header ,但我不确定该怎么做。

最佳答案

非常简单:

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
}

关于c# - 使用具有已知 IP 端点的 System.Net.WebRequest,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26050159/

相关文章:

c# - 如何使用 PrivateObject 在 C# 中对私有(private)方法进行单元测试

c# - 安卓/C# : Detect that NestedScrollView reached the bottom

node.js - 如何在 Node.js 中调试错误 ECONNRESET?

Python多线程——主线程 block socket.connect

C#/IronPython Interop 和 "float"数据类型

c# - 如何打开带附件的默认电子邮件客户端

c++ - Winsock 代码在 freeaddrinfo 中崩溃

ssl - 在更改 DNSt 之前如何确保 SSL 已正确安装?

command-line - 从命令行检查名称服务器设置

php - 自定义 URL/域(CNAME 别名?)