WIN KOI8-R UKRANIAN
ENGLISH

Java


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

К менеджеру был написан простой интерфейс для вывода статистики текущих соединений. Каждая сторока listbox отражает текущий поток менеджера - соединение с прокси-сервером. В строке отражается количество принятых байт, имя прокси-сервера, время ответа, средняя скорость.

Информация также выводится и в консоль:

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

Файл данных - ini-файл имеет такую структуру :


;----------------------------------
;Главная секция
;----------------------------------
[Main]
;Порт прокси менеджера
Port=3128
;Колличество прокси-серверов
NProxies=3
;----------------------------------
;----------------------------------
;Параметры прокси серверов
;----------------------------------
;Имя каждой секции состоит из сторки "Proxy"+N
; где N-номер прокси-сервера
[Proxy1]
;Адрес прокси сервера в формате adr:port
;где adr - IP адрес или имя домена прокси-сервера
; port - номер порта
Address=127.0.0.1:81
;Проритет прокси сервера
Priority=5
;----------------------------------
[Proxy2]
Address=proxy1.donbass.net:3128
Priority=2
;----------------------------------
[Proxy3]
Address=proxy.dn.ua:3128
Priority=0



WIN KOI8-R UKRAINIAN
ENGLISH

(C) Copyright Matsak Sergei Anatolievich
Last updated 10 October 2000 year.


Rambler's Top100