Проверка работы Proxy для конкретного ресурса - C#

Узнай цену своей работы

Формулировка задачи:

Добрый день, сам учусь на первом курсе, изучаем C#. Периодически делаю разнообразные программы чтобы набраться опыта. Работаю в Visual Studio 2013. И так, отказывается нормально работать 1 из алгоритмов программы.
Листинг программы
  1. //string[] Proxy - Массив прокси вида 127.0.0.1:80
  2. //int ProxyI - счетчик использованых/проверенных
  3. public string[] GetProxy()
  4. {
  5. bool send = false;
  6. string[] ProxyData = {};
  7. while (!send)
  8. {
  9. Thread.Sleep(1500);
  10. ProxyData = Proxy[ProxyI].Split(new char[] { ':' });
  11. send = CheckProxy(ProxyData[0], int.Parse(ProxyData[1]));
  12. ProxyI++;
  13. }
  14. return ProxyData;
  15. }
  16. public static bool CheckProxy(string host, int port)
  17. {
  18. bool result = false;
  19. WebRequest webRequest = WebRequest.Create("https://example.com/");
  20. webRequest.Proxy = new WebProxy(host, port);
  21. try
  22. {
  23. using (Stream responseStream = webRequest.GetResponse().GetResponseStream())
  24. {
  25. using (var sr = new StreamReader(responseStream))
  26. {
  27. result = true;
  28. }
  29. }
  30. }
  31. catch (WebException wex)
  32. {
  33. result = false;
  34. }
  35. return result;
  36. }
Сам этот "стрипт" проверки Proxy являетя часть от более большой программы, которая обращается к ресурсу для которого мы и проверяем Proxy. После запуски главного скрипта запускается
Листинг программы
  1. factory.StartNew(() => Parallel.ForEach(Data, options, Start));
Который запускает функцию Start -> Которая запускает ещё 1 функцию, например Example -> Эта в свою очередь и вызывает нашу GetProxy. Идея работы и сама проблема: Скрипт берет текущую прокси из массива прокси по счетчику, проверяет ее на работоспособность для конкретного ресурса и если прокси годная возвращает ее, если нет идет далее по списку. Функция "проверки работоспособности" просто делает GET запрос к ресурсу с помощью переданной ей прокси, и если исключение не вызвано то прокси считается годной. В прокси листе допустим 1000 прокси. Проблема заключается в том что по идее если все 999 прокси плохие а 1000'ная хорошая, то скрипт должен пройти все от 1 до 1000, Но он проходит ровно 10 штук (заколдованное число) и останавливается БЕЗ ОШИБОК И ИСКЛЮЧЕНИЙ, ПРИ ЗАПУСКЕ В РЕЖИМЕ ОТЛАДКИ ТОЖЕ ОСТАНАВЛИВАЕТСЯ БЕЗ СООБЩЕНИЙ. Cкрин из программы снифающей запросы я прикрепил к сообщению, из него видны эти 10 запросов, после которого все останавливается.

Решение задачи: «Проверка работы Proxy для конкретного ресурса»

textual
Листинг программы
  1. foreach(var e in exc.InnerExceptoins)
  2.                {
  3.                   Debug.WriteLine(e.Message);}  // е.Message на e.ToString()
  4.                }

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

11   голосов , оценка 3.727 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы