Является ли ServicePointManager.DefaultConnectionLimit IP-адресом?

Я создаю веб-сканер, и целевой сайт не допускает более двух одновременных подключений с одного и того же IP.

Мой план заключался в следующем: я бы купил EC2 с 4 дополнительными эластичными IP-адресами для более быстрого получения данных (было бы 10 одновременных соединений, 8 с дополнительных IP-адресов и 2 с "основного" IP).

Я бы использовал BindIPEndPointDelegate (взял отсюда), чтобы установить исходный IP, а затем начать загрузку страниц.

Поэтому здесь возникает мой вопрос: DefaultConnectionLimit будет применяться к каждому исходному IP-адресу или будет ли приложение целиком ограничено двумя одновременными подключениями?

1 ответ

Вам нужно указать хост, иначе он применяется ко всем хостам:

Используя config:

<!-- 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/

Другие вопросы по тегам