Проверка работы 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()
- }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д