Такую тему когда-то создавал но так и не понял...
Дайте пожалуйста пример,что бы программа несколько раз переходила на сайт и при этом каждый раз меняла прокси на следующий из списка,если проксей к примеру 2 а запросов 3 то что бы она брала всё сначала,спасибо кто поможет,если ответ будет стоющим то готов заплатить.
classProgram
{
privateconst int MaxThread = 5; // максимальное кол-во потоков
privatestatic Queue<string> proxyes; //глобальная очередь проксей
privatestaticreadonly Object sync = new object(); //объект для синхронизации потоков
privatestaticreadonly AutoResetEvent reset = new AutoResetEvent(false); //сигнализатор для потоков
privatestaticreadonly List<Thread> threads = new List<Thread>(); //список потоков
staticvoid Main()
{
string[] accounts = File.ReadAllLines("accounts.txt"); //получили все аккаунты
proxyes = new Queue<string>(File.ReadAllLines("proxy.txt")); // и все прокси
foreach (string account in accounts) //перебераем все акки
{
Thread worker = new Thread(Brute); //для каждого акка создаем новый поток
worker.Start(account); //запускаем его с параметром
threads.Add(worker); //и добавляем в список запущеных потоков
if (threads.Count >= MaxThread) reset.WaitOne(); //если потокв больше чем должно быть то ждем окончания
}
Console.WriteLine("Press any key...");
Console.ReadKey(true);
}
privatestaticvoid Brute(object param)
{
string login = ((string)param).Split(';')[0]; //получили логин
string pass = ((string)param).Split(';')[1]; //и пароль
string proxy;
lock (sync)
{
proxy = proxyes.Dequeue(); //вытащили прокси из очереди
proxyes.Enqueue(proxy); //и запихнули в конец очереди, то есть зациклили
}
HttpWebRequest request = (HttpWebRequest)WebRequest.Create("ССЫЛКА" + login + pass); //составили запрос
request.Proxy = new WebProxy(proxy); //привязали к запросу полученую проксю
HttpWebResponse response = (HttpWebResponse)request.GetResponse(); // и т.д.
// etc
lock(sync) threads.Remove(Thread.CurrentThread); //обезопалили удаление потока из списка
reset.Set(); //намекнули циклу что можно пускать новый поток
}
}
________________
Talk is cheap. Show me the code
— Linus Torvalds
Последний раз редактировалось Yukikaze; 25.08.2012 в 02:22.
classProgram
{
privateconst int MaxThread = 5; // максимальное кол-во потоков
privatestatic Queue<string> proxyes; //глобальная очередь проксей
privatestaticreadonly Object sync = new object(); //объект для синхронизации потоков
privatestaticreadonly AutoResetEvent reset = new AutoResetEvent(false); //сигнализатор для потоков
privatestaticreadonly List<Thread> threads = new List<Thread>(); //список потоков
staticvoid Main()
{
string[] accounts = File.ReadAllLines("accounts.txt"); //получили все аккаунты
proxyes = new Queue<string>(File.ReadAllLines("proxy.txt")); // и все прокси
foreach (string account in accounts) //перебераем все акки
{
Thread worker = new Thread(Brute); //для каждого акка создаем новый поток
worker.Start(account); //запускаем его с параметром
threads.Add(worker); //и добавляем в список запущеных потоков
if (threads.Count >= MaxThread) reset.WaitOne(); //если потокв больше чем должно быть то ждем окончания
}
Console.WriteLine("Press any key...");
Console.ReadKey(true);
}
privatestaticvoid Brute(object param)
{
string login = ((string)param).Split(';')[0]; //получили логин
string pass = ((string)param).Split(';')[1]; //и пароль
string proxy;
lock (sync)
{
proxy = proxyes.Dequeue(); //вытащили прокси из очереди
proxyes.Enqueue(proxy); //и запихнули в конец очереди, то есть зациклили
}
HttpWebRequest request = (HttpWebRequest)WebRequest.Create("ССЫЛКА" + login + pass); //составили запрос
request.Proxy = new WebProxy(proxy); //привязали к запросу полученую проксю
HttpWebResponse response = (HttpWebResponse)request.GetResponse(); // и т.д.
// etc
lock(sync) threads.Remove(Thread.CurrentThread); //обезопалили удаление потока из списка
reset.Set(); //намекнули циклу что можно пускать новый поток
}
}
Спасибо вам огромное,вы уже мне 20 раз помогаете)
Спасибо,спасибо еще раз спасибо.