Регистрация Главная Сообщество
Сообщения за день Справка Регистрация

реализовать прокси в потоках

-

Вопросы и ответы, обсуждения

- Ваши вопросы по C# только в данном разделе

Ответ
 
Опции темы
Старый 11.08.2012, 07:31   #16
 Сержант
Аватар для Yukikaze
 
Yukikaze в состоянии испепелить взглядомYukikaze в состоянии испепелить взглядомYukikaze в состоянии испепелить взглядомYukikaze в состоянии испепелить взглядомYukikaze в состоянии испепелить взглядомYukikaze в состоянии испепелить взглядомYukikaze в состоянии испепелить взглядомYukikaze в состоянии испепелить взглядомYukikaze в состоянии испепелить взглядомYukikaze в состоянии испепелить взглядомYukikaze в состоянии испепелить взглядом
Регистрация: 01.10.2011
Сообщений: 128
Популярность: 5723
Сказал(а) спасибо: 25
Поблагодарили 174 раз(а) в 105 сообщениях
 
По умолчанию Re: реализовать прокси в потоках

Цитата:
Сообщение от [Na`Vi]DendIПосмотреть сообщение
результата нет

конкретней. Что именно происходит, что не происходит, можно увидеть проблемный кусок кода?
________________
Talk is cheap. Show me the code
— Linus Torvalds
  Ответить с цитированием
Старый 11.08.2012, 12:46   #17
Почетный Пользователь
 Рыцарь
Аватар для the-boxi
 
the-boxi сломал счётчик популярности :(the-boxi сломал счётчик популярности :(the-boxi сломал счётчик популярности :(the-boxi сломал счётчик популярности :(the-boxi сломал счётчик популярности :(the-boxi сломал счётчик популярности :(the-boxi сломал счётчик популярности :(the-boxi сломал счётчик популярности :(the-boxi сломал счётчик популярности :(the-boxi сломал счётчик популярности :(the-boxi сломал счётчик популярности :(
Регистрация: 09.02.2011
Сообщений: 373
Популярность: 38009
Сказал(а) спасибо: 612
Поблагодарили 448 раз(а) в 175 сообщениях
Отправить сообщение для the-boxi с помощью ICQ Отправить сообщение для the-boxi с помощью MSN Отправить сообщение для the-boxi с помощью Skype™
 
По умолчанию Re: реализовать прокси в потоках

У лока есть недостаток?
А как по другому перебирать прокси в многопотоке?
Для этого делаем переменную summ глобальной и в локе каждому потоку присваиваем её значение и потом увеличиваем на один. Так у каждого потока будет свой индекс потом закрываем лок и всё, потом по этому индексу берем из массива прокси.

Yukikaze, а почему именно чек прокси на работоспособность через гугл?
Почему нельзя получать страницу по адресу прокси? Если ответ есть то рабочее если нет то не рабочее. Все довольно просто! И экономия времени, все прокси чекеры так работают!
________________
Разработка программ на заказ, все вопросы skype - the-boxi, ICQ - 616027961

Последний раз редактировалось the-boxi; 11.08.2012 в 12:49.
  Ответить с цитированием
Пользователь сказал cпасибо:
Yukikaze (11.08.2012)
Старый 11.08.2012, 13:20   #18
 Сержант
Аватар для Yukikaze
 
Yukikaze в состоянии испепелить взглядомYukikaze в состоянии испепелить взглядомYukikaze в состоянии испепелить взглядомYukikaze в состоянии испепелить взглядомYukikaze в состоянии испепелить взглядомYukikaze в состоянии испепелить взглядомYukikaze в состоянии испепелить взглядомYukikaze в состоянии испепелить взглядомYukikaze в состоянии испепелить взглядомYukikaze в состоянии испепелить взглядомYukikaze в состоянии испепелить взглядом
Регистрация: 01.10.2011
Сообщений: 128
Популярность: 5723
Сказал(а) спасибо: 25
Поблагодарили 174 раз(а) в 105 сообщениях
 
По умолчанию Re: реализовать прокси в потоках

Цитата:
Сообщение от the-boxiПосмотреть сообщение
Почему нельзя получать страницу по адресу прокси?

Так не факт же, только что проверял, по адрес:порт переходит нормально, но прокся не робит. ... или мне просто не свезло
В общем сейчас попробую

fixed
Попробовал, и вправду быстрее, теперь буду знать (:

Добавлено через 1 час 4 минуты
Маленько допилил класс
Код:
static class ProxyQ
{
    private static readonly object sync = new object();
    public static Queue<string> Proxyes;
    public static Queue<string> proxyCache;
    static ProxyQ()
    {
        Proxyes = new Queue<string>();
        proxyCache = new Queue<string>();
    }
    private static bool Check(string proxy)
    {
        HttpWebRequest req = (HttpWebRequest)WebRequest.Create("http://" + proxy);
        req.Timeout = 10000;
        try
        {
            req.GetResponse();
        }
        catch
        {
            return false;
        }

        return true;
    }

    public static string Next()
    {
        string proxy;
        while (Proxyes.Count > 0)
        {
            lock (sync) proxy = Proxyes.Dequeue();
            if (Check(proxy))
            {
                lock (sync) proxyCache.Enqueue(proxy);
                return proxy;
            }
        }

        lock (sync)
        {
            proxy = proxyCache.Dequeue();
            proxyCache.Enqueue(proxy);
        }

        return proxy;
    }
}
Пример реализации
Код:
class Program
{
    private static readonly Queue<string> proxyes = new Queue<string>();
    private static readonly Object sync = new object();
    static void Main()
    {
        ProxyQ.Proxyes = new Queue<string>(File.ReadAllLines("proxy.txt"));
        for (int i = 0; i < 100; i++)
        {
            ThreadPool.QueueUserWorkItem(Work, i);
        }
        Console.WriteLine("Press any key...");
        Console.ReadKey(true);
    }

    static void Work(object state)
    {
        string proxy = ProxyQ.Next();
        try
        {
            HttpWebRequest request = (HttpWebRequest)WebRequest.Create("http://google.ru/search?q="+state);
            request.Timeout = 20000;
            request.Proxy = new WebProxy(proxy);
            Console.WriteLine(state + ". ===" + proxy + "===");
        }
        catch(WebException e)
        {
            Console.WriteLine(state + " " + e.Message);
        }
    }
}
________________
Talk is cheap. Show me the code
— Linus Torvalds

Последний раз редактировалось Yukikaze; 11.08.2012 в 14:38. Причина: Добавлено сообщение
  Ответить с цитированием
Пользователь сказал cпасибо:
[Na`Vi]DendI (11.08.2012)
Старый 11.08.2012, 21:13   #19
Заблокирован
 Сержант
Аватар для [Na`Vi]DendI
 
[Na`Vi]DendI на правильном пути[Na`Vi]DendI на правильном пути
Регистрация: 06.06.2012
Сообщений: 131
Популярность: 102
Сказал(а) спасибо: 141
Поблагодарили 131 раз(а) в 78 сообщениях
Отправить сообщение для [Na`Vi]DendI с помощью Skype™
 
По умолчанию Re: реализовать прокси в потоках

Цитата:
Сообщение от YukikazeПосмотреть сообщение
Так не факт же, только что проверял, по адрес:порт переходит нормально, но прокся не робит. ... или мне просто не свезло
В общем сейчас попробую

fixed
Попробовал, и вправду быстрее, теперь буду знать (:

Добавлено через 1 час 4 минуты
Маленько допилил класс
Код:
static class ProxyQ
{
    private static readonly object sync = new object();
    public static Queue<string> Proxyes;
    public static Queue<string> proxyCache;
    static ProxyQ()
    {
        Proxyes = new Queue<string>();
        proxyCache = new Queue<string>();
    }
    private static bool Check(string proxy)
    {
        HttpWebRequest req = (HttpWebRequest)WebRequest.Create("http://" + proxy);
        req.Timeout = 10000;
        try
        {
            req.GetResponse();
        }
        catch
        {
            return false;
        }

        return true;
    }

    public static string Next()
    {
        string proxy;
        while (Proxyes.Count > 0)
        {
            lock (sync) proxy = Proxyes.Dequeue();
            if (Check(proxy))
            {
                lock (sync) proxyCache.Enqueue(proxy);
                return proxy;
            }
        }

        lock (sync)
        {
            proxy = proxyCache.Dequeue();
            proxyCache.Enqueue(proxy);
        }

        return proxy;
    }
}
Пример реализации
Код:
class Program
{
    private static readonly Queue<string> proxyes = new Queue<string>();
    private static readonly Object sync = new object();
    static void Main()
    {
        ProxyQ.Proxyes = new Queue<string>(File.ReadAllLines("proxy.txt"));
        for (int i = 0; i < 100; i++)
        {
            ThreadPool.QueueUserWorkItem(Work, i);
        }
        Console.WriteLine("Press any key...");
        Console.ReadKey(true);
    }

    static void Work(object state)
    {
        string proxy = ProxyQ.Next();
        try
        {
            HttpWebRequest request = (HttpWebRequest)WebRequest.Create("http://google.ru/search?q="+state);
            request.Timeout = 20000;
            request.Proxy = new WebProxy(proxy);
            Console.WriteLine(state + ". ===" + proxy + "===");
        }
        catch(WebException e)
        {
            Console.WriteLine(state + " " + e.Message);
        }
    }
}

Спасибо вам за то что вы мне всё розживали)
При работе ошибка "Очередь пуста"( proxy = proxyCache.Dequeue().
  Ответить с цитированием
Старый 11.08.2012, 23:11   #20
 Сержант
Аватар для Yukikaze
 
Yukikaze в состоянии испепелить взглядомYukikaze в состоянии испепелить взглядомYukikaze в состоянии испепелить взглядомYukikaze в состоянии испепелить взглядомYukikaze в состоянии испепелить взглядомYukikaze в состоянии испепелить взглядомYukikaze в состоянии испепелить взглядомYukikaze в состоянии испепелить взглядомYukikaze в состоянии испепелить взглядомYukikaze в состоянии испепелить взглядомYukikaze в состоянии испепелить взглядом
Регистрация: 01.10.2011
Сообщений: 128
Популярность: 5723
Сказал(а) спасибо: 25
Поблагодарили 174 раз(а) в 105 сообщениях
 
По умолчанию Re: реализовать прокси в потоках

Такая ошибка может вылезти если запустить одновременно все потоки, решается правильной работой с пулом потоков или модификацией метода Next
Код:
    public static string Next()
    {
        string proxy;
        while (Proxyes.Count > 0)
        {
            lock (sync) proxy = Proxyes.Dequeue();
            if (Check(proxy))
            {
                lock (sync) proxyCache.Enqueue(proxy);
                return proxy;
            }
        }
        //Сюда проверку по типу if(proxyCache.Count == 0) Thread.Sleep(1000); или что-то в этом же духе
        lock (sync)
        {
            proxy = proxyCache.Dequeue();
            proxyCache.Enqueue(proxy);
        }

        return proxy;
    }
Но всетаки в первую очень научится работать с потоками
________________
Talk is cheap. Show me the code
— Linus Torvalds
  Ответить с цитированием
Старый 11.08.2012, 23:18   #21
Заблокирован
 Сержант
Аватар для [Na`Vi]DendI
 
[Na`Vi]DendI на правильном пути[Na`Vi]DendI на правильном пути
Регистрация: 06.06.2012
Сообщений: 131
Популярность: 102
Сказал(а) спасибо: 141
Поблагодарили 131 раз(а) в 78 сообщениях
Отправить сообщение для [Na`Vi]DendI с помощью Skype™
 
По умолчанию Re: реализовать прокси в потоках

Цитата:
Сообщение от YukikazeПосмотреть сообщение
Такая ошибка может вылезти если запустить одновременно все потоки, решается правильной работой с пулом потоков или модификацией метода Next
Код:
    public static string Next()
    {
        string proxy;
        while (Proxyes.Count > 0)
        {
            lock (sync) proxy = Proxyes.Dequeue();
            if (Check(proxy))
            {
                lock (sync) proxyCache.Enqueue(proxy);
                return proxy;
            }
        }
        //Сюда проверку по типу if(proxyCache.Count == 0) Thread.Sleep(1000); или что-то в этом же духе
        lock (sync)
        {
            proxy = proxyCache.Dequeue();
            proxyCache.Enqueue(proxy);
        }

        return proxy;
    }
Но всетаки в первую очень научится работать с потоками

Я об этом уже думал,ставлю 1 поток ошибка та же..(
  Ответить с цитированием
Старый 11.08.2012, 23:31   #22
 Сержант
Аватар для Yukikaze
 
Yukikaze в состоянии испепелить взглядомYukikaze в состоянии испепелить взглядомYukikaze в состоянии испепелить взглядомYukikaze в состоянии испепелить взглядомYukikaze в состоянии испепелить взглядомYukikaze в состоянии испепелить взглядомYukikaze в состоянии испепелить взглядомYukikaze в состоянии испепелить взглядомYukikaze в состоянии испепелить взглядомYukikaze в состоянии испепелить взглядомYukikaze в состоянии испепелить взглядом
Регистрация: 01.10.2011
Сообщений: 128
Популярность: 5723
Сказал(а) спасибо: 25
Поблагодарили 174 раз(а) в 105 сообщениях
 
По умолчанию Re: реализовать прокси в потоках

Каким образом производится добавление задачи в потоки?
тупым for(i = 0; i < n; ++i) new Thread(DoWork).Start(); ?

процитирую сам себя
Цитата:
Сообщение от YukikazeПосмотреть сообщение
можно увидеть проблемный кусок кода?

________________
Talk is cheap. Show me the code
— Linus Torvalds
  Ответить с цитированием
Старый 11.08.2012, 23:38   #23
Заблокирован
 Сержант
Аватар для [Na`Vi]DendI
 
[Na`Vi]DendI на правильном пути[Na`Vi]DendI на правильном пути
Регистрация: 06.06.2012
Сообщений: 131
Популярность: 102
Сказал(а) спасибо: 141
Поблагодарили 131 раз(а) в 78 сообщениях
Отправить сообщение для [Na`Vi]DendI с помощью Skype™
 
По умолчанию Re: реализовать прокси в потоках

Цитата:
Сообщение от YukikazeПосмотреть сообщение
Каким образом производится добавление задачи в потоки?
тупым for(i = 0; i < n; ++i) new Thread(DoWork).Start(); ?

процитирую сам себя

Код:
 threads = new Thread[potokov];
                    for ( i = 0; i < threads.Length; i++)
                        threads[i] = new Thread(new ThreadStart(Brute));
                        threads[i].Start();
                    }
  Ответить с цитированием
Старый 11.08.2012, 23:47   #24
 Сержант
Аватар для Yukikaze
 
Yukikaze в состоянии испепелить взглядомYukikaze в состоянии испепелить взглядомYukikaze в состоянии испепелить взглядомYukikaze в состоянии испепелить взглядомYukikaze в состоянии испепелить взглядомYukikaze в состоянии испепелить взглядомYukikaze в состоянии испепелить взглядомYukikaze в состоянии испепелить взглядомYukikaze в состоянии испепелить взглядомYukikaze в состоянии испепелить взглядомYukikaze в состоянии испепелить взглядом
Регистрация: 01.10.2011
Сообщений: 128
Популярность: 5723
Сказал(а) спасибо: 25
Поблагодарили 174 раз(а) в 105 сообщениях
 
По умолчанию Re: реализовать прокси в потоках

Не правильная конструкция
Код:
string[] loginPass = //массив связок логин;пароль
foreach(string logpas in loginPass)
{
    ThreadPool.QueueUserWorkItem(Brute, logpas);
}
и собственно сам Brute
Код:
void Brute(object param)
{
   //брутим логинпароль
}
А в твоем случае создается N одинаковых потоков без какой либо синхронизации, так еще и куча ресурсов уходит на инициализацию этих самых потоков

Добавлено через 7 минут
Так же можно проюзать такой костыль
Код:
    public static string Next()
    {
        string proxy;
        while (Proxyes.Count > 0)
        {
            lock (sync) proxy = Proxyes.Dequeue();
            if (Check(proxy))
            {
                lock (sync) proxyCache.Enqueue(proxy);
                return proxy;
            }
        }
        if(proxyCache.Count > 0) 
        {
            lock (sync)
           {
                proxy = proxyCache.Dequeue();
                proxyCache.Enqueue(proxy);
           }
           return proxy;
       }

        return null;
    }
________________
Talk is cheap. Show me the code
— Linus Torvalds

Последний раз редактировалось Yukikaze; 11.08.2012 в 23:55. Причина: Добавлено сообщение
  Ответить с цитированием
Старый 11.08.2012, 23:57   #25
Заблокирован
 Сержант
Аватар для [Na`Vi]DendI
 
[Na`Vi]DendI на правильном пути[Na`Vi]DendI на правильном пути
Регистрация: 06.06.2012
Сообщений: 131
Популярность: 102
Сказал(а) спасибо: 141
Поблагодарили 131 раз(а) в 78 сообщениях
Отправить сообщение для [Na`Vi]DendI с помощью Skype™
 
По умолчанию Re: реализовать прокси в потоках

Цитата:
Сообщение от YukikazeПосмотреть сообщение
Не правильная конструкция
Код:
string[] loginPass = //массив связок логин;пароль
foreach(string logpas in loginPass)
{
    ThreadPool.QueueUserWorkItem(Brute, logpas);
}
и собственно сам Brute
Код:
void Brute(object param)
{
   //брутим логинпароль
}
А в твоем случае создается N одинаковых потоков без какой либо синхронизации, так еще и куча ресурсов уходит на инициализацию этих самых потоков

Добавлено через 7 минут
Так же можно проюзать такой костыль
Код:
    public static string Next()
    {
        string proxy;
        while (Proxyes.Count > 0)
        {
            lock (sync) proxy = Proxyes.Dequeue();
            if (Check(proxy))
            {
                lock (sync) proxyCache.Enqueue(proxy);
                return proxy;
            }
        }
        if(proxyCache.Count > 0) 
        {
            lock (sync)
           {
                proxy = proxyCache.Dequeue();
                proxyCache.Enqueue(proxy);
           }
           return proxy;
       }

        return null;
    }

Как я понял тут работает только 1 поток ? а нужна именно многопоточностть.
  Ответить с цитированием
Старый 12.08.2012, 00:04   #26
 Сержант
Аватар для Yukikaze
 
Yukikaze в состоянии испепелить взглядомYukikaze в состоянии испепелить взглядомYukikaze в состоянии испепелить взглядомYukikaze в состоянии испепелить взглядомYukikaze в состоянии испепелить взглядомYukikaze в состоянии испепелить взглядомYukikaze в состоянии испепелить взглядомYukikaze в состоянии испепелить взглядомYukikaze в состоянии испепелить взглядомYukikaze в состоянии испепелить взглядомYukikaze в состоянии испепелить взглядом
Регистрация: 01.10.2011
Сообщений: 128
Популярность: 5723
Сказал(а) спасибо: 25
Поблагодарили 174 раз(а) в 105 сообщениях
 
По умолчанию Re: реализовать прокси в потоках

Цитата:
Сообщение от [Na`Vi]DendIПосмотреть сообщение
тут работает только 1 поток ?

нет
ThreadPool.QueueUserWorkItem добавляет метод в пулл потоков, а винда уже сама определяет сколько она может выделить потоков для выполнения задачи. При этом новые потоки не создаются и не удаляются, когда поток отработал один метод, он переходит к следующему из очереди, и так до конца
________________
Talk is cheap. Show me the code
— Linus Torvalds
  Ответить с цитированием
Старый 12.08.2012, 00:12   #27
Заблокирован
 Сержант
Аватар для [Na`Vi]DendI
 
[Na`Vi]DendI на правильном пути[Na`Vi]DendI на правильном пути
Регистрация: 06.06.2012
Сообщений: 131
Популярность: 102
Сказал(а) спасибо: 141
Поблагодарили 131 раз(а) в 78 сообщениях
Отправить сообщение для [Na`Vi]DendI с помощью Skype™
 
По умолчанию Re: реализовать прокси в потоках

Цитата:
Сообщение от YukikazeПосмотреть сообщение
нет
ThreadPool.QueueUserWorkItem добавляет метод в пулл потоков, а винда уже сама определяет сколько она может выделить потоков для выполнения задачи. При этом новые потоки не создаются и не удаляются, когда поток отработал один метод, он переходит к следующему из очереди, и так до конца

Другого выхода нет ?
  Ответить с цитированием
Старый 12.08.2012, 00:17   #28
 Сержант
Аватар для Yukikaze
 
Yukikaze в состоянии испепелить взглядомYukikaze в состоянии испепелить взглядомYukikaze в состоянии испепелить взглядомYukikaze в состоянии испепелить взглядомYukikaze в состоянии испепелить взглядомYukikaze в состоянии испепелить взглядомYukikaze в состоянии испепелить взглядомYukikaze в состоянии испепелить взглядомYukikaze в состоянии испепелить взглядомYukikaze в состоянии испепелить взглядомYukikaze в состоянии испепелить взглядом
Регистрация: 01.10.2011
Сообщений: 128
Популярность: 5723
Сказал(а) спасибо: 25
Поблагодарили 174 раз(а) в 105 сообщениях
 
По умолчанию Re: реализовать прокси в потоках

[Na`Vi]DendI, поищи по форуму, здесь уже описывали альтернативные реализации многопоточности
________________
Talk is cheap. Show me the code
— Linus Torvalds
  Ответить с цитированием
Старый 12.08.2012, 00:22   #29
Заблокирован
 Сержант
Аватар для [Na`Vi]DendI
 
[Na`Vi]DendI на правильном пути[Na`Vi]DendI на правильном пути
Регистрация: 06.06.2012
Сообщений: 131
Популярность: 102
Сказал(а) спасибо: 141
Поблагодарили 131 раз(а) в 78 сообщениях
Отправить сообщение для [Na`Vi]DendI с помощью Skype™
 
По умолчанию Re: реализовать прокси в потоках

Цитата:
Сообщение от YukikazeПосмотреть сообщение
[Na`Vi]DendI, поищи по форуму, здесь уже описывали альтернативные реализации многопоточности

Ну вообщем на етих альтернативных на форуме я и написал)
пилянул так:

Thread[] threads = new Thread[potokov];
for (int i = 0; i < potokov; i++)
{

Thread thr = new Thread(new ThreadStart(Brute));
threads[i] = thr;
Thread.Sleep(55);
threads[i].Start();
}

Последний раз редактировалось [Na`Vi]DendI; 12.08.2012 в 00:30.
  Ответить с цитированием
Старый 12.08.2012, 00:46   #30
 Сержант
Аватар для Yukikaze
 
Yukikaze в состоянии испепелить взглядомYukikaze в состоянии испепелить взглядомYukikaze в состоянии испепелить взглядомYukikaze в состоянии испепелить взглядомYukikaze в состоянии испепелить взглядомYukikaze в состоянии испепелить взглядомYukikaze в состоянии испепелить взглядомYukikaze в состоянии испепелить взглядомYukikaze в состоянии испепелить взглядомYukikaze в состоянии испепелить взглядомYukikaze в состоянии испепелить взглядом
Регистрация: 01.10.2011
Сообщений: 128
Популярность: 5723
Сказал(а) спасибо: 25
Поблагодарили 174 раз(а) в 105 сообщениях
 
По умолчанию Re: реализовать прокси в потоках

ужасный пример ты нашел, уж лучше так
Код:
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); //добавляем поток в список
}
метод брута
Код:
void Brute(object param)
{
   string pair = (string)param;
   //Используем пару лог пасс по назначению
   Threads.Remove(Thread.CurrentThread); // удаляем отработавший поток из списка
}
________________
Talk is cheap. Show me the code
— Linus Torvalds

Последний раз редактировалось Yukikaze; 12.08.2012 в 01:05.
  Ответить с цитированием
Ответ


Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
[Помогите!] Прокси в потоках [Na`Vi]DendI Вопросы и ответы, обсуждения 9 01.07.2012 01:35
Как такое можно реализовать? iamzero Общение разработчиков 11 31.05.2012 21:07
[Статья] Как реализовать сумму прописью на С++ GAHIK С/С++ 2 09.01.2012 01:49

Заявление об ответственности / Список мошенников

Часовой пояс GMT +4, время: 14:34.

Пишите нам: [email protected]
Copyright © 2024 vBulletin Solutions, Inc.
Translate: zCarot. Webdesign by DevArt (Fox)
G-gaMe! Team production | Since 2008
Hosted by GShost.net