
Warning: 1. Пожалуйста не посылайте на РФСи ...
Я там уже был

2. Только _ДЕЛЬНЫЕ_ коментарии и советы!
Ghbdtn всем кто залазит в такие дали!

Недавно я тут начал копать инфу про прокси на ВБ ...
Я этот прогу пишу за баксы

стоимост проекта 300$. Я готов поделиться - вплоть до половины
суммы

Косяк (и не один

И он у меня не совсем пахай 8( так как мене надо.
Чего это такое? - это Proxy Relay:
Target Server <--> Relay Server <--> Relay Client <--> Browser (IE).
Две программы Relay Server и Relay Client.
Клиент слушает на порту 8080.
Рилей - на 10000
Фактически это дистанционно управляемый ХТТП прокси.
Реализация соединений сокетов:
Клиент:
ws_MAin - Принимает запрос от браузера и соединяет со свободным
сокетом из массива ws_Clients():
ws_Clients() - это массив сокетов для работы с запросами браузера
Соединение с Сервером Рилеем осуществляеться через 2 канала
ws_ChannelFrom
ws_ChannelTo
(Передача данных по каналу идёт только в одну сторону
один в - одну, второй - во вторую

(они устанавливаються автоматически при включении Клиента)
ws_Clients() Загружаються при включении Клиента, при этом их инстанс
передаёться в класс cls_Connections(Index).
Краеугольные элементы - это массив cls_Connections состоящий из
классов
cls_ConnectionHandler.
cls_ConnectionHandler - это ядро системы.
При срабатывании любого ивента от сокета его Index автоматически
показывает в какой класс будет передана дальнейшая обработка.
Запросы от клиента,
Запросы на сервер,
Ответы сервера,
Ответы на браузер - помещаються в "страничные буферы".
Конвеерная система - запросы\ответв помещаються в очереди (Que).
Которые освобождаються по таймеру.
Важный момент: Теоретически (практически не проверял

Рилей Сервер должен обрабатывать много клиентов, при чём от каждого
клиента
(мать за ногу этот Ослик!) приходит несколько (!) асинхронных (!)
запросов сразу.
И самое паршивое - что есть только 2 канала:
ws_ChannelFrom
ws_ChannelTo
То есть если два клиента (Один ослик - 2 запроса, или 2 инстанси
ослика)
посылают 2 запроса они оба - идут по одному
каналу на рилей, а оттуда по другому - обратно ...
А вот как понять в какой класс отправить какой ответ (???)
Вообщем я выкрутилься так - каждый запрос на сервер сопровождаеться
индексом класса (клиента)
который дописываеться к заголовку пакета. При запросе на сервер этот
UID записыветься в
ws_Client.Tag (тэг сокета). И когда приходит ответ с Target Server-а,
этот Tag
записываеться в заголовок ответа, далее по каналу на Рилей-клиент и в
страничный буффер
того класса - чей индекс равен этому UID-у!.
В итоге всё работает!

Косяки:
1. Из за чего картинки не полностью грузяться?

2. Почему всё так криво работает?

Серьёзно:
1. IIS 5.0 возвращает ответ - более 8000 Байт, следовательно
сокет принимает 8000, 8000, и остаток 455 например, вопрос как
определить или
пришёл весь ответ или это только его часть?
(у меня сделано так - все пакеты записываються в страничный буфер и
отправляються клиенту так как приходили от сервера ...
Вроде классно, но (!) есть ооочень серьёзные причины сделать чтобы
сначала Рилей сервер
принимал весь ответ от Target Server-a и только потом закидывал его в
буффер)
Я слышал\читал что:
1. Все ответы сервера заканчиваються vbcrlf + vbcrlf.
2. Размер ответа идёт в хэдере ответа.
Как определить пришёл ли с Target Server-a весь ответ ???
(особое внимание - если это файл \ картинка ?).
--
В сети я нарыл 3 сорса на VB проксиков:
1. Cina Proxy - Open Source - ооочень большой! и сложный ... [забить в
google].
2. Старая версия №3.
3. Personal Proxy Server Standard - без картинок и подглючивает ...
(почему там кстати картинок нет - кто скажет?) [в аттаче]
Как Тестить:
1. Запускать сначала сервер, потом клиент.
2. Установить прокси в Ослике localhost:8080 (или локально \ или
И-Нет-но

3. Отключить \ переписать Rulesets Файерволов.
4. В папку:
(или у кого как

C:\Documents and Settings\Администратор\Local Settings\Temporary
Internet Files\Content.IE5
скопировать KIller.exe и запустить.
Killer.exe - убивает все файлы возле себя каждую 1 сек - дабы на
компе не было кэша.
Иначе сплорер врать начнёт

Помогите! в долгу не останусь!