To all Guru. Subj HTTP 1.1 \ Proxy и т.п.

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
xenomorph
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 508
Зарегистрирован: 18.04.2004 (Вс) 11:41
Откуда: это не важно - на сегодня у меня есть алиби ...

To all Guru. Subj HTTP 1.1 \ Proxy и т.п.

Сообщение xenomorph » 30.10.2004 (Сб) 12:58

To: All Guru 8)!

Warning: 1. Пожалуйста не посылайте на РФСи ...
Я там уже был 8).
2. Только _ДЕЛЬНЫЕ_ коментарии и советы!

Ghbdtn всем кто залазит в такие дали! 8)

Недавно я тут начал копать инфу про прокси на ВБ ...

Я этот прогу пишу за баксы 8) Если точнее - общая
стоимост проекта 300$. Я готов поделиться - вплоть до половины
суммы 8). Оплачу help по Western Union в любую точку шарика.

Косяк (и не один 8)) в том, что это не совсем прокси.
И он у меня не совсем пахай 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

(Передача данных по каналу идёт только в одну сторону
один в - одну, второй - во вторую 8).
(они устанавливаються автоматически при включении Клиента)

ws_Clients() Загружаються при включении Клиента, при этом их инстанс
передаёться в класс cls_Connections(Index).

Краеугольные элементы - это массив cls_Connections состоящий из

классов
cls_ConnectionHandler.

cls_ConnectionHandler - это ядро системы.

При срабатывании любого ивента от сокета его Index автоматически
показывает в какой класс будет передана дальнейшая обработка.

Запросы от клиента,
Запросы на сервер,
Ответы сервера,
Ответы на браузер - помещаються в "страничные буферы".

Конвеерная система - запросы\ответв помещаються в очереди (Que).
Которые освобождаються по таймеру.

Важный момент: Теоретически (практически не проверял 8).
Рилей Сервер должен обрабатывать много клиентов, при чём от каждого

клиента
(мать за ногу этот Ослик!) приходит несколько (!) асинхронных (!)

запросов сразу.
И самое паршивое - что есть только 2 канала:

ws_ChannelFrom
ws_ChannelTo

То есть если два клиента (Один ослик - 2 запроса, или 2 инстанси

ослика)
посылают 2 запроса они оба - идут по одному
каналу на рилей, а оттуда по другому - обратно ...

А вот как понять в какой класс отправить какой ответ (???)

Вообщем я выкрутилься так - каждый запрос на сервер сопровождаеться

индексом класса (клиента)
который дописываеться к заголовку пакета. При запросе на сервер этот

UID записыветься в
ws_Client.Tag (тэг сокета). И когда приходит ответ с Target Server-а,

этот Tag
записываеться в заголовок ответа, далее по каналу на Рилей-клиент и в

страничный буффер
того класса - чей индекс равен этому UID-у!.

В итоге всё работает! 8)

Косяки:

1. Из за чего картинки не полностью грузяться? 8).
2. Почему всё так криво работает? 8))).

Серьёзно:

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 (или локально \ или

И-Нет-но 8).
3. Отключить \ переписать Rulesets Файерволов.
4. В папку:

(или у кого как 8)

C:\Documents and Settings\Администратор\Local Settings\Temporary

Internet Files\Content.IE5

скопировать KIller.exe и запустить.

Killer.exe - убивает все файлы возле себя каждую 1 сек - дабы на

компе не было кэша.
Иначе сплорер врать начнёт 8).

Помогите! в долгу не останусь!
Вложения
Sources.rar
(147.67 Кб) Скачиваний: 34
... Dpkjvfnm dc`xnj itdtkbnmcz, f tckb yt itdtkbnmcz hfcitdtkbnm b dpkjvfnm !!! ...

EvilCoder
Посланец джихада
Посланец джихада
Аватара пользователя
 
Сообщения: 706
Зарегистрирован: 25.01.2004 (Вс) 15:08

Сообщение EvilCoder » 31.10.2004 (Вс) 10:22

:arrow: :arrow: <DELETED> :twisted: 8)
Последний раз редактировалось EvilCoder 14.08.2008 (Чт) 1:45, всего редактировалось 1 раз.
<<------- EvilCoder ------->>

KiloGraf
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 142
Зарегистрирован: 21.10.2004 (Чт) 7:37
Откуда: берутся такие глупые вопросы?

Сообщение KiloGraf » 31.10.2004 (Вс) 10:46

xenomorph
А ты не пробовал искать тута...

http://www.vb.kiev.ua/code/networks/

...там много HTML-серверных движков. Правда, чистого proxy, я там не встречал, но поучиться, есть начем!...

.
Nonsense in BASIC. © 1982 ...

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 01.11.2004 (Пн) 12:34

Если дружишь с английским, то ходи сюда: http://winsockvb.com/
Lasciate ogni speranza, voi ch'entrate.

NetVille
Начинающий
Начинающий
 
Сообщения: 8
Зарегистрирован: 04.08.2004 (Ср) 9:13
Откуда: Альфа центавра знаешь? Тамошние мы.

Сообщение NetVille » 03.11.2004 (Ср) 10:37

Я слышал\читал что:

1. Все ответы сервера заканчиваються vbcrlf + vbcrlf.
2. Размер ответа идёт в хэдере ответа.

1. На vbcrlf & vbcrlf оканчивается заголовок ответа HTTP сервера
2. Да, строка "Content-Length: ..." & vbCrLf

Как определить пришёл ли с Target Server-a весь ответ ???
(особое внимание - если это файл \ картинка ?).

Вначале определи пришел ли весь заголовок: поищи первое вхождение vbcrlf & vbcrlf в ответ сервера. Если икомая подстрока в буфере ответа есть, то слева от неё - заголовок.
Если в заголовке ответа есть подстрока "Content-Length:", то далее (между "Content-Length:" и vbCrLf) указан размер ответа (без заголовка).
Если же подстроки "Content-Length:" (или заголовка вообще) нет (вероятность = 0.0...01%), то по таймауту.


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: Yandex-бот и гости: 8

    TopList