Java

Здесь представлены исходные тексты, а здесь - мое консольное приложения на Java. Это приложение представляет собой "менеджер" прокси-серверов. Это значит, что оно, являясь локальным прокси-сервером, перенаправляет запросы от браузера к другим прокси-серверам. При этом, особенно в случае быстрого доступа к нескольким прокси-серверам, значительно ускоряется загрузка страниц, содержащих большое количество элементов (фреймы, картинки, апплеты и т.д.).

Программа работает следующим образом: первым получает управление метод main класса proxman. Данный метод анализирует параметры командной строки и создает экземпляр класса proxman с параметрами командной строки или параметрами по умолчанию. Определены два параметра командной строки: имя файла данных и номер порта программы. По умолчанию это "proxies.dat" и 1111 соответственно. Конструктор класса proxman производит чтение из файла данных и заполняет внутренний массив прокси-серверов. Далее управление получает метод run класса proxman. Этот метод создает сервер-сокет с номером порта, переданным конструктору класса, и ожидает подключения к этому порту браузера. При подключении браузера создается новый экземпляр класса ReqThread и запускается его метод start в качестве отдельной нити. Ожидание подключения и создание нити происходят циклически в течение всего времени жизни программы. Конструктор класса ReqThread инициализирует внутренние переменные переданными ему значениями абсолютного номера объекта, адреса и порта прокси-сервера и сокета броузера. Далее управление получает метод run класса ReqThread. Данный метод создает входной и выходной потоки, связанные с сокетом браузера, и передает управление методу handleReq. Этот метод создает клиентский сокет, присоединенный к прокси-серверу, создает входной и выходной потоки для этого сокета, читает из выходного потока браузера данные и пересылает их в входной поток прокси-сервера. Затем читает из выходного потока прокси-сервера данные и передает их во входной поток браузера. На этом выполнение метода handleReq завершается, и управление передается методу run, который также завершается, после чего данный экземпляр класса ReqThread автоматически уничтожается.

Файл данных содержит параметры прокси-серверов в виде www.xxx.yyy:zzz, где www.xxx.yyy - адрес прокси-сервера, zzz - номер порта прокси-сервера. Каждая строка соответствует отдельному прокси-серверу. Если строка начинается с символа "#" - это комментарий.




Rambler's Top100