【发布时间】:2021-11-27 07:35:36
【问题描述】:
我有一个 C# 程序,它也依赖于其他库,它通过库使用 HttpClient 从服务器获取数据。
在我运行程序的机器上,IPv6 和 IPv4 都可用。
我想确保程序仅将 IPv6 用于其 HttpClient 连接,不包括 IPv4。
有没有办法实现这一点,可能无需修改使用 HttpClient 的库的源代码,即在 Main 方法中使用某种“每个进程”设置来禁用整个进程的 IPv4?
【问题讨论】:
-
出于兴趣,您为什么要强制使用 IPv6(我只是想知道您是否可以通过其他机制实现您的结果)?一种选择是使用 IPv6 地址代替 URL 中的主机名 - 如果您的网络服务器需要主机名,则使用在 IPv6 地址上运行的 Fiddler 或 nginx 等代理将流量重定向到正确的服务器。
-
@RB 我正在尝试制作一个大规模的金融数据爬虫,所以它不仅仅是一个网络服务器,但我理解你的意思:使用 HttpClient 不是适合这项工作的工具。
-
@EnricoDetoma 啊,有趣的用例!一种选择是使用 TcpClient 编写您自己的 HTTP 客户端。这样您就可以完全控制 IP 地址等,并且如果您基本上只是使用一些基本标头执行 GET 请求,那么它可能不是 那 很多工作......只是把它作为一个选项扔掉:)
-
@EnricoDetoma 您是否完全确定运行此程序的机器甚至支持 65,000 个活动连接?这是相当大量的线程并行工作。
-
您最好创建一小段代码来从给定的 URL 中检索数据,然后使用 Hangfire 或 HPC 调度程序之类的东西来实际执行所有操作
标签: c# .net network-programming ipv6