List<Thread> Threads = new List<Thread>();
const int max = 8;
int counter = 0;
Queue<string> Logins = new Queue<string>(/* тут как бы заполнили очередь связками логин;пароль */);
while(true)
{
if(Threads.Count > max) continue; //если максимум потоков то пропускаем итерацию
if(Logins.Count == 0) break; //если в очереди не осталось аккаунтов то выходим из цикла
var thread = new Thread(Brute);
thread.IsBackground = true;
thread.Start(Logins.Dequeue());
Threads.Add(thread); //добавляем поток в список
}
Тоже не катит((
попробую эту http://zhyk.ru/forum/showthread.php?t=377890 тему мб подойдет.)
Все перепробовал, нечего не помогает((
Будто в c# вообще нельзя брут с прокси сделать(
Последний раз редактировалось [Na`Vi]DendI; 12.08.2012 в 06:07.
Оба варианта работают как часы, я бы на твоем месте почитал RSDN.ru там много полезных статей по .NET
[Ссылки могут видеть только зарегистрированные пользователи. ]
[Ссылки могут видеть только зарегистрированные пользователи. ]
[Ссылки могут видеть только зарегистрированные пользователи. ]
Оба варианта работают как часы, я бы на твоем месте почитал RSDN.ru там много полезных статей по .NET
[Ссылки могут видеть только зарегистрированные пользователи. ]
[Ссылки могут видеть только зарегистрированные пользователи. ]
[Ссылки могут видеть только зарегистрированные пользователи. ]
Всё прочитаю спасибо,но на данный момент меня интересует прокси((
Начал юзать так:
string[] loginPass = //массив связок логин;пароль
foreach(string logpas in loginPass)
{
ThreadPool.QueueUserWorkItem(Brute, logpas);
}
Вообще жесть скорость низкая(
Если уже и буду юзать данный способ то как остановить потоки ? Выходить из логики потока не хорошо.( спасибо заранее)
Последний раз редактировалось [Na`Vi]DendI; 12.08.2012 в 18:44.
Чето подумал и решил, что можно отделаться одним статичным классом
Код:
static class ProxyQ
{
private static readonly object sync = new object();
public static readonly Queue<string> Proxyes;
static ProxyQ()
{
Proxyes = new Queue<string>();
}
private static bool Check(string proxy)
{
HttpWebRequest req = (HttpWebRequest)WebRequest.Create("http://google.ru/");
req.Proxy = new WebProxy(proxy);
req.Timeout = 5000;
try
{
HttpWebResponse resp = (HttpWebResponse)req.GetResponse();
return resp.StatusCode == HttpStatusCode.OK;
}
catch
{
return false;
}
}
public static void Add(IEnumerable<string> proxyes)
{
foreach (string proxy in proxyes)
{
Proxyes.Enqueue(proxy);
}
}
public static void Add(string proxy)
{
Proxyes.Enqueue(proxy);
}
public static string Get()
{
while (Proxyes.Count > 0)
{
string proxy;
lock (sync) proxy = Proxyes.Dequeue();
if (Check(proxy)) return proxy;
}
return null;
}
}
Вот пример использования
Код:
ProxyQ.Add("proxy"); //или ProxyQ.Add(new []{"proxy", "proxy", "proxy"}); или даже ProxyQ.Proxyes = new Queue<string>(массив проксей);
Console.WriteLine(ProxyQ.Get());
Метод Get() возвращает первый попавшийся рабочий прокси из очереди
Как можно отобразить отправку исходящего запроса в ProgressBar?
Чтобы программа не зависала на время запроса?
Queue<string> Logins = new Queue<string>(loader.Logins);
int max = Convert.ToInt32(threadBOX.Text);
while (true)
{
if (Threads.Count > max) continue; //если максимум потоков то пропускаем итерацию
if (Logins.Count == 0)
{
startbutton.Enabled = true;
stoped.Enabled = false;
break;
}
var thread = new Thread(goes);
thread.IsBackground = true;
thread.Start(Logins.Dequeue());
Threads.Add(thread); //добавляем поток в список
}
Все вроде работает хорошо, но если я укажу к примеру 100 связок и 5 потоков то тупо зависает, короче если я ставлю потоков меньше чем связок то программа зависает, что же делать ? если 100000 связок столько же потоков не поставишь.(