Проверка работы Proxy для конкретного ресурса - C#
Формулировка задачи:
Добрый день, сам учусь на первом курсе, изучаем C#.
Периодически делаю разнообразные программы чтобы набраться опыта.
Работаю в Visual Studio 2013.
И так, отказывается нормально работать 1 из алгоритмов программы.
Сам этот "стрипт" проверки Proxy являетя часть от более большой программы, которая обращается к ресурсу для которого мы и проверяем Proxy.
После запуски главного скрипта запускается
Который запускает функцию Start -> Которая запускает ещё 1 функцию, например Example -> Эта в свою очередь и вызывает нашу GetProxy.
Идея работы и сама проблема: Скрипт берет текущую прокси из массива прокси по счетчику, проверяет ее на работоспособность для конкретного ресурса и если прокси годная возвращает ее, если нет идет далее по списку.
Функция "проверки работоспособности" просто делает GET запрос к ресурсу с помощью переданной ей прокси, и если исключение не вызвано то прокси считается годной.
В прокси листе допустим 1000 прокси.
Проблема заключается в том что по идее если все 999 прокси плохие а 1000'ная хорошая, то скрипт должен пройти все от 1 до 1000, Но он проходит ровно 10 штук (заколдованное число) и останавливается БЕЗ ОШИБОК И ИСКЛЮЧЕНИЙ, ПРИ ЗАПУСКЕ В РЕЖИМЕ ОТЛАДКИ ТОЖЕ ОСТАНАВЛИВАЕТСЯ БЕЗ СООБЩЕНИЙ.
Cкрин из программы снифающей запросы я прикрепил к сообщению, из него видны эти 10 запросов, после которого все останавливается.
//string[] Proxy - Массив прокси вида 127.0.0.1:80 //int ProxyI - счетчик использованых/проверенных public string[] GetProxy() { bool send = false; string[] ProxyData = {}; while (!send) { Thread.Sleep(1500); ProxyData = Proxy[ProxyI].Split(new char[] { ':' }); send = CheckProxy(ProxyData[0], int.Parse(ProxyData[1])); ProxyI++; } return ProxyData; } public static bool CheckProxy(string host, int port) { bool result = false; WebRequest webRequest = WebRequest.Create("https://example.com/"); webRequest.Proxy = new WebProxy(host, port); try { using (Stream responseStream = webRequest.GetResponse().GetResponseStream()) { using (var sr = new StreamReader(responseStream)) { result = true; } } } catch (WebException wex) { result = false; } return result; }
factory.StartNew(() => Parallel.ForEach(Data, options, Start));
Решение задачи: «Проверка работы Proxy для конкретного ресурса»
textual
Листинг программы
foreach(var e in exc.InnerExceptoins) { Debug.WriteLine(e.Message);} // е.Message на e.ToString() }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д