|
2 / 2 / 0
Регистрация: 10.08.2020
Сообщений: 169
|
|||||||||||
Как сделать алгоритм проверка прокси, через каждый свой поток?26.10.2020, 16:08. Показов 15079. Ответов 22
Метки нет (Все метки)
Здравствуйте, не знаю как даже спросить что бы вы меня поняли.
Вообщем то, не раз видел программы которые проверяют прокси, хорошие ли они или нет. Решил сделать такую-же программу, только вот прокси я проверяю следующим образом: Берется прокси, делается запрос через это прокси, и если прошло успешно то все хорошо. Ну в принципе мне этого и достаточно, с этим кодом все работает. Но в чем заключается вопрос? В том что моя программа работает медленно. Я сделал метод который как раз и делает все это, он принимает 2 параметра, 1 это список прокси, 2 это токен потока. Вот он:
Запускаю я через Task, вот так :
И в чем проблема? В том что я не знаю как сделать так что бы каждый поток проверял свою индивидуальную прокси со списка. И как это сделать? У меня есть в методе GET Список прокси, который перебирается через цикл и добавляет к request.Proxy = ProxyClient.Parse(ProxyType.Socks4, ProxyLoad[i]); А когда я запуская 2 потока, то цикл работает 2 раза и перебирается одна и та же прокси. Можете мне помочь? Не могу придумать алгоритм, не знаю как это сделать? Что бы каждый поток перебирал свою прокси, может какой нибудь вообще другой алгоритм? Ожидаю от вас помощи! Пишите пожалуйста по теме! Спасибо! Добавлено через 20 минут А вот использовать Random я не хотел бы, что бы каждая прокси в своем потоке выбиралась рандомно, наверное я просто не знаю как стабильно это сделать. Потому что когда я пробовал это, я сделал 10 потоков, и у меня очень и очень много раз были хорошие одинаковые прокси. Типа вот так: 131.255.32.45:44413 131.255.32.45:44413 131.255.32.45:44413 131.255.32.45:44413 131.255.32.45:44413 138.204.140.199:53900 138.204.140.199:53900 138.204.140.199:53900 186.219.3.66:4145 186.219.3.66:4145 И я не знаю почему это так. Хотя в моих представления это должно быть так: Первый поток выполняет цикл и этот цикл перебирает прокси рандомно. Второй поток делает все так - же. Но получается так что эти два потока все равно перебирают одно и то же прокси. Не знаю почему так. Если нужно скину код как я это делал.
0
|
|||||||||||
| 26.10.2020, 16:08 | |
|
Ответы с готовыми решениями:
22
Async/await и свой поток, как это сделать правильно? Если каждый поток пишет в свой элемент std::vector, является ли это потокобезопасным ? |
|
312 / 143 / 77
Регистрация: 23.08.2015
Сообщений: 455
|
|
| 26.10.2020, 17:46 | |
|
Прочитайте, возможно поможет - https://intuit.ru/studies/cour... 447?page=4
0
|
|
|
|
|
| 26.10.2020, 17:53 | |
|
0
|
|
|
2 / 2 / 0
Регистрация: 10.08.2020
Сообщений: 169
|
|
| 26.10.2020, 18:31 [ТС] | |
|
Tatarin78, да, спасибо. Но я знаю как запускать несколько потоков сразу.
Я вот там еще перелистал на другую лекцию, и по моему нашел что мне нужно если я не ошибаюсь. Например у меня 12 прокси и 3 потока. 12 / 3 = 4, значит каждый поток будет у меня обрабатывать 4 прокси. Я что то думал об этом, но вот тут проблема. Если например у меня вот такое число прокси: 13 прокси. То если мы 13(прокси)/3(потока) = 4,33333333333. Можно конечно сделать целое число, то получается просто 4. То одна прокси будет не обработана. Еще если прокси 12 а потоков 12, то каждый поток будет по 1 прокси обрабатывать. Но если! Если у меня 12 прокси а потоков 20. То 12 / 20? То получается : 0,6. Получается 0 прокси будет обрабатываться. Можно конечно сделать проверку, если потоков больше прокси то сделать количество потоков равным количество прокси. Спасибо конечно, буду пробовать.
0
|
|
|
2 / 2 / 0
Регистрация: 10.08.2020
Сообщений: 169
|
|||||||||||
| 26.10.2020, 22:08 [ТС] | |||||||||||
|
Rius, спасибо. Но я пока что не могу сделать то что я сам написал.
![]() Добавлено через 1 час 3 минуты Не понимаю еще вот что.
В чем дело? Во время отладки все хорошо. Добавлено через 1 час 17 минут Как же я уже устал от этого. Опять какие то проблемы и проблемы. Ведь все так хорошо сделал. Почему при создание 69 потоков у меня дубликатов хороших прокси ой как много... На выходи получаю те самые 14 прокси из 966. Наверное потому что я 966 / 69 = 14. Но каждое id умножается потом на эти 14, если id = 1, то проверяет 14 прокси из 966, а потом id 2, уже 2 * 14 = 28, и уже 28 проверяются, но проверяются они специальным образом, у меня цикл обрабатывает 14 раз, это 28 - i(14раз). Должно проверять. Ай, ладно, лучше покажу код:
Потом я делю все прокси на число потоков, после этого умножаю каждое id потока на деленное число. После этого я делаю цикл который должен выполнятся столько, сколько получилось при деление прокси на потоков. И дальше сами уже знаете что должно быть. Подскажите что не так то??
0
|
|||||||||||
|
|
||
| 27.10.2020, 15:44 | ||
|
Либо берёте и делаете, как я выше показал. И всё работает. А свой путь прокладывать - это гарантированно проблемы. Добавлено через 7 минут В коде видна одна фича, но она с c# 5 не должна являться проблемой : Замыкания на переменных цикла
0
|
||
|
2 / 2 / 0
Регистрация: 10.08.2020
Сообщений: 169
|
|||
| 27.10.2020, 16:04 [ТС] | |||
|
Rius, да я знаю, просто уже как 7 дней вожусь с её, и все это из за потоков. Только начал изучать потоки, и фиг не понимаю как с ними работать.
0
|
|||
|
2 / 2 / 0
Регистрация: 10.08.2020
Сообщений: 169
|
|
| 27.10.2020, 16:35 [ТС] | |
|
Rius, хорошо.
Я как смотрю там, то вот просто не могу понять код, а именно в чем его задача. И как мне это поможет? Просто мне нужно что бы каждый поток выполнял свою прокси, а распараллелить обработку элементов списка как мне поможет?
0
|
|
|
2 / 2 / 0
Регистрация: 10.08.2020
Сообщений: 169
|
|
| 27.10.2020, 16:37 [ТС] | |
|
Rius, понятно.
0
|
|
|
2 / 2 / 0
Регистрация: 10.08.2020
Сообщений: 169
|
|||||||
| 27.10.2020, 23:48 [ТС] | |||||||
|
Rius, вообщем то, не знаю. Я понял почти принцип кода.
Но я что то не пойму. Вообщем то, проблему не решил. Алгоритм работает хорошо, так как я сделал подобную программу на консольном приложении. Попробовал при каждом старте потока ждать его завершение, с помощи task.Wait(), и все работает. А вот когда запускаю всех в месте то уже просто работает 1 поток из 2 и перебирает элементы с массива. Вот код:
Наверное в той теме что вы прислали есть решение, но все таки я её вообще не понял.
0
|
|||||||
|
2 / 2 / 0
Регистрация: 10.08.2020
Сообщений: 169
|
|||||||||||
| 02.11.2020, 19:59 [ТС] | |||||||||||
|
Проблема решена.
Когда я запускал цикл, который создает потоки и передавал переменную в качестве id потока которая увеличивается при каждом выполнение цикла. Так я пытался создает поток со своим же id. Пробовал узнавать текущее id потока с помощи currentId, но работало это только с Task. Как решил? Не знаю как это назвать, возможно замыкание цикла называется. Честно говоря я не знаю что это. Но проблему я решил, просто создал переменную внутри цикла, увеличивал её, передавая методу Get. Не так:
Но спасибо тем кто пытался помочь.
0
|
|||||||||||
|
2 / 2 / 0
Регистрация: 10.08.2020
Сообщений: 169
|
|
| 02.11.2020, 20:57 [ТС] | |
|
Rius, да, но как я понял у меня версия C# 4.0. И не понимаю тогда почему у меня такое происходит.
Может у меня ошибочный вывод: С# 1.0 выпущен с.NET 1.0 С# 1.2 (как ни странно); выпущен с.NET 1.1 С# 2.0 выпущен с.NET 2.0 С# 3.0 выпущен с.NET 3.5 С# 4.0 выпущен с.NET 4 С# 5.0 выпущен с.NET 4.5 С# 6.0 выпущен с.NET 4.6 С# 7.0 выпущен с.NET 4.6.2 С# 7.3 выпущен с.NET 4.7.2 У меня .NET 4.
0
|
|
|
|
|||
| 02.11.2020, 21:01 | |||
Сообщение было отмечено QmlwZ как решение
РешениеДобавлено через 58 секунд Ставьте .Net Framework Dev Pack: https://dotnet.microsoft.com/download Добавлено через 1 минуту
1
|
|||
|
2 / 2 / 0
Регистрация: 10.08.2020
Сообщений: 169
|
|
| 02.11.2020, 21:04 [ТС] | |
|
Rius, посмотрел как узнать, а это зайти в реестр.
Вот что там:
0
|
|
|
2 / 2 / 0
Регистрация: 10.08.2020
Сообщений: 169
|
|
| 02.11.2020, 21:06 [ТС] | |
|
Rius, хорошо, большое вам спасибо.
0
|
|
| 02.11.2020, 21:06 | |
|
Помогаю со студенческими работами здесь
20
Как сделать так, чтобы каждый поток работал с отдельным элементом массива
Как сделать форвард ip4 > ip6 через прокси ? В окне перемещаются объекты, отталкиваясь от стенок окна. Каждый объект имеет свой поток, перемещающий его. Встретившись, объекты начинают двигаться Проверка соединения с Интернетом через прокси Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Вывод данных через динамический список в справочнике
Maks 01.04.2026
Реализация из решения ниже выполнена на примере нетипового справочника "Спецтехника" разработанного в конфигурации КА2.
Задача: вывести данные из ТЧ нетипового документа. . .
|
Функция заполнения текстового поля в реквизите формы документа
Maks 01.04.2026
Алгоритм из решения ниже реализован на нетиповом документе "ВыдачаОборудованияНаСпецтехнику" разработанного в конфигурации КА2, в дополнении к предыдущему решению.
На форме документа создается. . .
|
К слову об оптимизации
kumehtar 01.04.2026
Вспоминаю начало 2000-х, университет, когда я писал на Delphi. Тогда среди программистов на форумах активно обсуждали аккуратную работу с памятью: нужно было следить за переменными, вовремя. . .
|
Идея фильтра интернета (сервер = слой+фильтр).
Hrethgir 31.03.2026
Суть идеи заключается в том, чтобы запустить свой сервер, о чём я если честно мечтал давно и давно приобрёл книгу как это сделать. Но не было причин его запускать. Очумелые учёные напечатали на. . .
|
|
Модель здравосоХранения 6. ESG-повестка и устойчивое развитие; углублённый анализ кадрового бренда
anaschu 31.03.2026
В прикрепленном документе раздумья о том, как можно поменять модель в будущем
|
10 пpимет, которые всегда сбываются
Maks 31.03.2026
1. Чтобы, наконец, пришла маршрутка, надо закурить. Если сигарета последняя, маршрутка придет еще до второй затяжки даже вопреки расписанию.
2. Нaдоели зима и снег? Не надо переезжать. Достаточно. . .
|
Перемещение выделенных строк ТЧ из одного документа в другой
Maks 31.03.2026
Реализация из решения ниже выполнена на примере нетипового документа "ВыдачаОборудованияНаСпецтехнику" с единственной табличной частью "ОборудованиеИКомплектующие" разработанного в конфигурации КА2. . . .
|
Functional First Web Framework Suave
DevAlt 30.03.2026
Sauve. IO
Апнулись до NET10.
Из зависимостей один пакет, работает одинаково хорошо как в режиме проекта
так и в интерактивном режиме. из сложностей - чисто функциональный подход.
Решил. . .
|