是IP的ServicePointManager.DefaultConnectionLimit?

时间:2017-11-12 17:35:52

标签: c# servicepointmanager

我正在构建网络抓取工具,目标网站不允许来自同一IP的两个以上并发连接。

我的计划是:我会购买带有4个额外弹性ip的EC2以更快地获取数据(将是10个并发连接,8个来自额外的IP'以及2个来自"主要&# 34; IP)。

我会使用BindIPEndPointDelegate(从here获取)设置源IP,然后开始下载页面。

所以我的问题在于:DefaultConnectionLimit将应用于每个源IP,还是整个应用程序仅限于2个并发连接?

1 个答案:

答案 0 :(得分:0)

您需要指定主机,否则它适用于所有主机:

使用配置:

<!-- By host -->
<configuration>
 <system.net>
  <connectionManagement>
   <add address="myapi.com" maxconnection="12"/>
   <add address="yourapi.com" maxconnection="8"/>
   <add address="74.125.236.199" maxconnection="4"/>
  </connectionManagement>
 </system.net>
</configuration>

<!-- All hosts -->
<configuration>
 <system.net>
  <connectionManagement>
   <add address="*" maxconnection="15"/>
  </connectionManagement>
 </system.net>
</configuration>

使用代码:

var apiServicePoint1 = ServicePointManager.FindServicePoint("myapi.com");

apiServicePoint1.ConnectionLimit = 12;

var apiServicePoint2 = ServicePointManager.FindServicePoint("yourapi.com");

apiServicePoint2.ConnectionLimit = 8;

参考:https://vincentlauzon.com/2015/12/13/beyond-2-concurrent-connections-in-net/