Заголовки HTTP-документов

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
Scuder
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 334
Зарегистрирован: 17.08.2002 (Сб) 13:18
Откуда: Moscow, Russia

Заголовки HTTP-документов

Сообщение Scuder » 31.01.2005 (Пн) 13:47

Какие они?? :-(

Есть у меня программка, которая общается с сервером по нестандартному порту (winsock). Но на одной из точек столкнулся с проблемой - порт закрыт и местная провайда ни в какую не хочет его открывать. Подумал, решил фигачить по 80-му, используя туннелирование. Вот собственно и вопрос: как завернуть информацию в оболочку html-документа? А точнее, как должен выглядеть заголовок http?

Вот нашёл ссылку, но, честное слово, не втыкаю! :-(

Inferno
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 179
Зарегистрирован: 26.01.2005 (Ср) 1:06

Сообщение Inferno » 31.01.2005 (Пн) 14:32


Scuder
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 334
Зарегистрирован: 17.08.2002 (Сб) 13:18
Откуда: Moscow, Russia

Сообщение Scuder » 31.01.2005 (Пн) 14:40

Inferno писал(а):Прпробуй SocksCap http://www.izone.kiev.ua/obzor/security/181.htm


Не, не хочу ничего пробовать. Есть собственная реализация. Проблема-то за малым..

xenomorph
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 508
Зарегистрирован: 18.04.2004 (Вс) 11:41
Откуда: это не важно - на сегодня у меня есть алиби ...

Re ...

Сообщение xenomorph » 31.01.2005 (Пн) 16:04

Привет всем!

А наф=И=Ка тебе имитировать НТТП запросы?
- ИМХО ты хотиш мимикрировать под НТТП шоб тебя пропустили ...

Туннеллирование и макскировка трафика под НТТП есть вещи раз-
ные но могут идти и вместе 8). ИМХО ты эти два понятия путаешь 8).
Как и я в своё время 8)))

Тебе не _надо_ маскироваться под НТТП заголовок -
просто пусти по портам 0 <-> 80 ...

Хотя у меня сильное впечатление, шо тама не НТТП а
другой фильтр на incoming \ outgoing 8))).
А в худшем случае - ZoneAlarm \ Outpost с отловом
на уровне приложений ...

И вообще, я ещё ни разу не встречался с эвристическим анализом
содержания пакетов а ля ХТТП \ Не ХТТП => Алярм! \ Ахтунг! 8)))

Если по твоему - то выглядит это так ... :

Эпиграф:
- ... ах ты не хочешь по-хорошему?!!!
- Уберём вазелин !!!

Запрос:
'================================================
GET / HTTP/1.1
Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/msword, application/vnd.ms-excel, application/vnd.ms-powerpoint, */*
Accept-Language: ru
Accept-Encoding: gzip, deflate
User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; .NET CLR 1.1.4322)
Host: 127.0.0.1:22000
Connection: Keep-Alive
'================================================

Ответ сервера:
'================================================
HTTP/1.1 200 OK
Server: Microsoft-IIS/5.0
X-Powered-By: ASP.NET
Content-Location: http://127.0.0.1/Main.htm
Date: Sat, 04 Jan 2003 11:26:06 GMT
Content-Type: text/html
Accept-Ranges: bytes
Last-Modified: Sat, 04 Jan 2003 11:26:06 GMT
ETag: W/"5094bf8afbb3c21:e30"
Content-Length: 3069

<html xmlns:v="urn:schemas-microsoft-com:vml"
xmlns:o="urn:schemas-microsoft-com:office:office"
xmlns:w="urn:schemas-microsoft-com:office:word"
xmlns="http://www.w3.org/TR/REC-html40">

<head>
<meta http-equiv=Content-Type content="text/html; charset=windows-1251">
<meta name=ProgId content=Word.Document>
<meta name=Generator content="Microsoft Word 9">
<meta name=Originator content="Microsoft Word 9">
<link rel=File-List href="./Main.files/filelist.xml">
<title>Welcome to the Matrix </title>
<!--[if gte mso 9]><xml>
<o:DocumentProperties>
<o:Author>Админ</o:Author>
<o:Template>Normal</o:Template>
<o:LastAuthor>Админ</o:LastAuthor>
<o:Revision>3</o:Revision>
<o:TotalTime>5</o:TotalTime>
<o:Created>2003-01-04T14:00:00Z</o:Created>
<o:LastSaved>2003-01-04T14:14:00Z</o:LastSaved>
<o:Pages>1</o:Pages>
<o:Words>6</o:Words>
<o:Characters>37</o:Characters>
<o:Company>ДС</o:Company>
<o:Lines>1</o:Lines>
<o:Paragraphs>1</o:Paragraphs>
<o:CharactersWithSpaces>45</o:CharactersWithSpaces>
<o:Version>9.2812</o:Version>
</o:DocumentProperties>
</xml><![endif]-->
<style>
<!--
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
{mso-style-parent:"";
margin:0cm;
margin-bottom:.0001pt;
mso-pagination:widow-orphan;
font-size:12.0pt;
font-family:"Times New Roman";
mso-fareast-font-family:"Times New Roman";}
h1
{mso-style-next:Обычный;
margin:0cm;
margin-bottom:.0001pt;
text-align:center;
mso-pagination:widow-orphan;
page-break-after:avoid;
mso-outline-level:1;
font-size:24.0pt;
mso-bidi-font-size:12.0pt;
font-family:"Times New Roman";
color:blue;
mso-font-kerning:0pt;
mso-ansi-language:EN-US;}
@page Section1
{size:595.3pt 841.9pt;
margin:2.0cm 42.5pt 2.0cm 3.0cm;
mso-header-margin:35.4pt;
mso-footer-margin:35.4pt;
mso-paper-source:0;}
div.Section1
{page:Section1;}
-->
</style>
<!--[if gte mso 9]><xml>
<o:shapedefaults v:ext="edit" spidmax="1027">
<o:colormenu v:ext="edit" fillcolor="#9cf"/>
</o:shapedefaults></xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext="edit">
<o:idmap v:ext="edit" data="1"/>
</o:shapelayout></xml><![endif]-->
</head>

<body bgcolor="#99ccff" lang=RU style='tab-interval:35.4pt'>

<div class=Section1>

<p class=MsoNormal align=center style='text-align:center'><span lang=EN-US
style='color:red;mso-ansi-language:EN-US'><![if !supportEmptyParas]>&<![endif]><o:p></o:p></span></p>

<p class=MsoNormal align=center style='text-align:center'><span lang=EN-US
style='color:red;mso-ansi-language:EN-US'><![if !supportEmptyParas]>&<![endif]><o:p></o:p></span></p>

<p class=MsoNormal align=center style='text-align:center'><b><span lang=EN-US
style='font-size:24.0pt;mso-bidi-font-size:12.0pt;color:blue;mso-ansi-language:
EN-US'>Welcome to the Matrix<o:p></o:p></span></b></p>

<h1><span lang=EN-US>IIS 5.0 is running …</span><span lang=EN-US
style='font-size:12.0pt;color:windowtext'><o:p></o:p></span></h1>

</div>

</body>

</html>
'================================================

Вот они какие - козлы се(Р)верные ..
... тьфу ... НТТП-ешные пакеты 8)))!

Ну как 8)))?

В каКчестве подопытных кроликов использовалиь:
- Ослик МС ИЕ 6.0
- МС ИИС 5.00
- Программа - роутер \ проксик \ перехватчик 8).
(в аттаче)

Пихать инфу внутрь пакета можна везде 8)
Content-Length: 3069 - надо синхро ... а нафиг собственно *)? -
если это подстава а не протокол 8))).
Вложения
Interceptor.rar
By Me 8)!
(92.69 Кб) Скачиваний: 22
... Dpkjvfnm dc`xnj itdtkbnmcz, f tckb yt itdtkbnmcz hfcitdtkbnm b dpkjvfnm !!! ...

Scuder
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 334
Зарегистрирован: 17.08.2002 (Сб) 13:18
Откуда: Moscow, Russia

Сообщение Scuder » 31.01.2005 (Пн) 16:12

Вот давай отсюда поподробнее:

Запрос:
'================================================
GET / HTTP/1.1
Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/msword, application/vnd.ms-excel, application/vnd.ms-powerpoint, */*
Accept-Language: ru
Accept-Encoding: gzip, deflate
User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; .NET CLR 1.1.4322)
Host: 127.0.0.1:22000
Connection: Keep-Alive


Именно это я в чистом виде и пытаюсь передать. Не получается. Какие разделители между строками и что в конце? vbCrLf?

То же самое передаёт ie. Т.е. именно это видит моя программа, которая слушает порт. Но отправить это же через винсок не получается. Информация не доходит.

xenomorph
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 508
Зарегистрирован: 18.04.2004 (Вс) 11:41
Откуда: это не важно - на сегодня у меня есть алиби ...

Re ...

Сообщение xenomorph » 31.01.2005 (Пн) 16:52

Привет всем!

В упор не понимаю чего тебе надо 8)))
(можешь как-то более членораздельно
объяснить чего ты хочешь добиться а НЕ ТО
как ты это ??? делаешь 8)))

Но последний вопрос был:

> Какие разделители между строками и что в конце? vbCrLf?

Между строчками vbCrLf
А вконце - vbCrLf & vbCrLf
(сори - я их поубивал в постинге 8)))
т.е. двойной возврат каретки с переводом строки.

Если это зафигачить на ИИС - он тебе ответит 8).
И будет тебе счастие 8).
И вообще - посмотри перехват данных в проге -
она их чистыми показывает 8).
... Dpkjvfnm dc`xnj itdtkbnmcz, f tckb yt itdtkbnmcz hfcitdtkbnm b dpkjvfnm !!! ...

Scuder
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 334
Зарегистрирован: 17.08.2002 (Сб) 13:18
Откуда: Moscow, Russia

Сообщение Scuder » 31.01.2005 (Пн) 17:03

Во, xenomorph! Thx!! Именно в разделителях тарбла была. Всё заработало. Спасибо большое. :-)

Scuder
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 334
Зарегистрирован: 17.08.2002 (Сб) 13:18
Откуда: Moscow, Russia

Сообщение Scuder » 31.01.2005 (Пн) 17:13

Да, в догонку. :-) Заголовки мой сервер увидел, а всё, что шло после них - нет. Почему?

xenomorph
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 508
Зарегистрирован: 18.04.2004 (Вс) 11:41
Откуда: это не важно - на сегодня у меня есть алиби ...

Хех ...

Сообщение xenomorph » 31.01.2005 (Пн) 17:59

Телепаты всё нщё в отпуске 8) ...
Одно скажу на 100% -
ты что-то делаешь криво 8))))!
... Dpkjvfnm dc`xnj itdtkbnmcz, f tckb yt itdtkbnmcz hfcitdtkbnm b dpkjvfnm !!! ...

Scuder
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 334
Зарегистрирован: 17.08.2002 (Сб) 13:18
Откуда: Moscow, Russia

Re: Хех ...

Сообщение Scuder » 31.01.2005 (Пн) 18:29

xenomorph писал(а):Телепаты всё нщё в отпуске 8) ...
Одно скажу на 100% -
ты что-то делаешь криво 8))))!


Спасибо. :-)
Я уже разобрался:
Код: Выделить всё
...
& "Content-Type: text/xml; charset=windows-1251" & vbCrLf _
& "Content-Length: " & CStr(Len(Data)) & vbCrLf _
& Data & vbCrLf & vbCrLf


Теперь всё Ок. :-)

Scuder
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 334
Зарегистрирован: 17.08.2002 (Сб) 13:18
Откуда: Moscow, Russia

Сообщение Scuder » 07.02.2005 (Пн) 13:18

Продолжаем тему. :-)

Всё-таки хреново с этим 80-м портом работать. Такая трабла возникла. Content-Length. Допустим, указываю 200. Так вот 200 кб к серверу дойдут. Больше - никак! Заметил - в winroute включен http-инспектор, который, как оказалось, не только проверяет трафик (http/не http), но и следит за качеством отправляемых пакетов. Т.е. объявлено 200 кб, значит 200! И ни байтом больше. Ну у себя-то я его могу отключить, но на каком-нибудь узле стопудофф такие же шняги стоят и один фиг пакет зарежут! Короче, как "переобъявить" длину пакета?? Новый POST не проходит.. :-(

xenomorph
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 508
Зарегистрирован: 18.04.2004 (Вс) 11:41
Откуда: это не важно - на сегодня у меня есть алиби ...

Сообщение xenomorph » 07.02.2005 (Пн) 20:43

Привет Всем!
2Scuder:

Опа, это уже интересТнее ...

> Всё-таки хреново с этим 80-м портом работать. Такая трабла возникла. Content-Length.
> Допустим, указываю 200. Так вот 200 кб к серверу дойдут. Больше - никак! Заметил - в
> winroute включен http-инспектор, который, как оказалось, не только проверяет трафик
> (http/не http), но и следит за качеством отправляемых пакетов. Т.е. объявлено 200 кб,
> значит 200! И ни байтом больше. Ну у себя-то я его могу отключить, но на каком-нибудь
> узле стопудофф такие же шняги стоят и один фиг пакет зарежут! Короче, как
> "переобъявить" длину пакета?? Новый POST не проходит..

1) Ты уверен что это именно Винроут режет пакет? - ИМХО это так
себя ИИС вести будет - это надо проверить ...
2) А что мешает корректировать динамически ContentLength? Подбирая нужный?
... Dpkjvfnm dc`xnj itdtkbnmcz, f tckb yt itdtkbnmcz hfcitdtkbnm b dpkjvfnm !!! ...

Scuder
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 334
Зарегистрирован: 17.08.2002 (Сб) 13:18
Откуда: Moscow, Russia

Сообщение Scuder » 08.02.2005 (Вт) 11:01

1) Ты уверен что это именно Винроут режет пакет? - ИМХО это так себя ИИС вести будет - это надо проверить ...


Не, IIS тут вообще ни причём. Рубит именно winroute. Когда я отключаю его HTTP-инспектор, всем становится до лампочки что, куда и по какому порту я шлю..

Да.. и вообще странно ты говоришь... ПО ИДЕЕ данные которые ТЫ\Вы посылаешь имеют размер и ты/ВЫ его должны(обязаны) знать... его только надо вычислить:)


2) А что мешает корректировать динамически ContentLength? Подбирая нужный?


Да не могу я изначально знать длину. Я устанавливаю соединение по 80-му порту и мне нужно постоянно туда-обратно пересылать данные. Сколько будет этих данных - неизвестно. А вот как "корректировать" длину - непонятно. Единственный вариант, который я вижу, это разрывать соединение после передачи данных и каждый раз заново его инициировать. Но в этом случае невозможна передача данных от сервера клиенту, без запроса со стороны клиента. А это не катит. Напомню, что по нестандартному порту или с отключенным http-инспектором всё работает нормально. Т.е. проблема в объявлении длины пакета. Неужели нельзя её сделать неограниченной?

xenomorph
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 508
Зарегистрирован: 18.04.2004 (Вс) 11:41
Откуда: это не важно - на сегодня у меня есть алиби ...

Сообщение xenomorph » 08.02.2005 (Вт) 17:07

2 Flex ИМХО ты немного не въехал в вопрос 8)
2 Scuder:
Теперь всё ясно. Таки тебе надо Туннелирование с маскировкой 8).

Как я это вижу:

Обычный "браузер - сервер" диалог идёт с разрывом связи опосля
запрос - ответ сессии. Как только Контент length будет достигнут -
соединение будет рубиться на корню Винрутом.
ИМХО 1. С этим ты ничего не сделаешь. Мой ответ насчёт неограни ... - НЕТ! 8)
ИМХО 2. Данные ты передавать можешь так:

Передаём данные на Сервер с клиента - всё просто:

1. Создаём соединение.
2. Подбираем Длинну пакета, формируем + посылаем. Ждём ответ.
3. Сервак принимает - формирует ответ и отсылает подтверждение
о приёме.
4. Рубим соединение.

Передаём данные с Сервера На клиента - тут тяжелее:

Клиент периодически (по таймеру) коннектиться к серваку и передаёт пакет
"Свободен для приёма данных" 8). Сервак в каКчестве ответа
посылает данные. Соединение рубиться.

Единственное что - посмотри Keep-Alive parameter ...
Он если не ошибаюсь - заставляет и клиента и сервака не рвать соединение ...
Я НЕ знаю всех деталей т.к. глубже в данную спецификацию не вникал 8).
Но идея неплохая - особенно если её доделать и оформить классом 8).
... Dpkjvfnm dc`xnj itdtkbnmcz, f tckb yt itdtkbnmcz hfcitdtkbnm b dpkjvfnm !!! ...

Scuder
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 334
Зарегистрирован: 17.08.2002 (Сб) 13:18
Откуда: Moscow, Russia

Сообщение Scuder » 09.02.2005 (Ср) 10:51

Теперь всё ясно. Таки тебе надо Туннелирование с маскировкой .


Ну раз пошёл такой разговор, может объяснишь, чем отличается туннелирование от маскировки под трафик? :-)

Как я это вижу:

Обычный "браузер - сервер" диалог идёт с разрывом связи опосля
запрос - ответ сессии. Как только Контент length будет достигнут -
соединение будет рубиться на корню Винрутом.
ИМХО 1. С этим ты ничего не сделаешь. Мой ответ насчёт неограни ... - НЕТ!
ИМХО 2. Данные ты передавать можешь так:

Передаём данные на Сервер с клиента - всё просто:

1. Создаём соединение.
2. Подбираем Длинну пакета, формируем + посылаем. Ждём ответ.
3. Сервак принимает - формирует ответ и отсылает подтверждение
о приёме.
4. Рубим соединение.


Да, вот так сейчас всё и происходит. Однако, хотя соединение винроутом рубится, winsock'и друг друга не перестают видеть. То есть коннект есть, но любая попытка что-то отправить - не проходит..

Передаём данные с Сервера На клиента - тут тяжелее:


Угу. Это я с самого начала понимал.. :-(

Клиент периодически (по таймеру) коннектиться к серваку и передаёт пакет "Свободен для приёма данных" . Сервак в каКчестве ответа
посылает данные. Соединение рубиться.

Вот! Получается offline! Т.е. если я раньше просто делал рассылку на все свои клиенты и забывал про это, то теперь придётся ставить запросы в очередь, ждать когда клиенты поочереди появятся в он-лайне и передавать. При этом нужно вести хистори - кому отправлено, кому - нет. Клиентов на первое время планируется 40 штук. Я сразу говорю - это неудобно. :-(

Единственное что - посмотри Keep-Alive parameter ...
Он если не ошибаюсь - заставляет и клиента и сервака не рвать соединение ...


С самого начала этот параметр был. После тестов (какие заголовки обязательны, какие нет), вид запроса с клиента стал таким:
Код: Выделить всё
    sData = "POST / HTTP/1.1" & vbCrLf _
       & "Host: 0.0.0.0" & vbCrLf _
       & "Connection: Keep-Alive" & vbCrLf _
       & "Content-Type: text/html" & vbCrLf _
       & "Content-Length: " & Len(Data) & vbCrLf _
       & "#" & Data & vbCrLf & vbCrLf


Я НЕ знаю всех деталей т.к. глубже в данную спецификацию не вникал. Но идея неплохая - особенно если её доделать и оформить классом.


Идея, может, и не плохая. Но это не тот протокол взаимодействия, который хотелось бы иметь.. :-(

2 FleX_2004:
Это как???? перебором??? он же говорит что не знает длину данных- как тогда ему подбирать?... хотя я чо то не пойму что вы хотите намутить....


Да, ты чего-то не понимаешь. Длину разово передающихся данных, я, естественно, знаю. Проблема в том, что нужно не разрывая соединения передавать данные в обе стороны много-много раз! Если я при первоначальном запросе объявлю длину в размере опять же первоначально передающихся данных, то после этого ничего больше послать не смогу. Если я определю длину в 1000 раз превышающую размер первоначальных данных, то пока я не пошлю всё это количество данных, обратно ничего получить не смогу.. Теперь проблема ясна? :-)

xenomorph
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 508
Зарегистрирован: 18.04.2004 (Вс) 11:41
Откуда: это не важно - на сегодня у меня есть алиби ...

Сообщение xenomorph » 09.02.2005 (Ср) 19:13

> Ну раз пошёл такой разговор, может объяснишь, чем отличается
> туннелирование от маскировки под трафик?

Это долго объяснять. И пока смысла я в этом не вижу.
(можешь считать что я съехал с сабжекта ;-)

> Да, вот так сейчас всё и происходит. Однако, хотя соединение винроутом
> рубится, winsock'и друг друга не перестают видеть.
> То есть коннект есть,
...
> но любая попытка что-то отправить - не проходит..

т.е. соединение как раз и НЕ рубиться - НО данные пересылать
не получаеться? Так?

...
> Угу. Это я с самого начала понимал. ...

Извини дарагой! ... Попробуй мене (с пеной у рта - опционально 8))))
доказать что ты пишешь милый чат, беби-ситтер-контроллер для невинных
младенцев и бабушек 8)))))!

Кто тебе сказал что будет просто? 8ъ?

> Вот! Получается offline!

Почему? Я бы это назвал скорее пакетно-импульсной передачей.
Отнюдь не оффлайном. У неё другие серьёзные недостатки -
но не эти.

> Т.е. если я раньше просто делал рассылку на
> все свои клиенты и забывал про это, то теперь придётся ставить
> запросы в очередь, ждать когда клиенты поочереди появятся в
> он-лайне и передавать. ...

???
Тебя же пропускают внутрь? т.е. ты можешь подсоедениться к серверу?
В чём же проблема? (имею ввиду что у тебя 40 серваков - клиент - это то чем
ты управляешь)

Да кстати - очередь надо реализовать в каждом клиенте.
Обязательно.

> При этом нужно вести хистори - кому отправлено,
> кому - нет.

Нет. Инициализируешь сокет пул в 40 классов,
Массив классов - сокетов ...
соединяешь их с клиентами в цикле ...
Юзаешь малтиинстансинг ...
В итоге - тебе написать-то надо 1 класс.
Если 1 заработает следовательно - все будут!.

> Клиентов на первое время планируется 40 штук. Я
> сразу говорю - это неудобно.

> Идея, может, и не плохая. Но это не тот протокол взаимодействия,
> который хотелось бы иметь..

Думаю это просто сложно! Но РЕАЛИЗУЕМО!
и просто _круто_! 8)))

+ См. пункт выше 8).
Кто тебе сказал что такой протокол будет легким Я идиот! Убейте меня, кто-нибудь!?

У него будет огомный плюс - он проходит по ХТТП проксям!
Ловишь про что я? Если скодить нормальный протокол - т.е. полностью
отвечающий РФСи ... то это будет круто ...
------------------------------------------------------------------------------------------------------------
Имеем:
1. Супер клиент.
2. 40 Серверов 8).
------------------------------------------------------------------------------------------------------------
Супер клиент.

1. Делаем массив Винсоков (40)
2. Делаем класс отвечающий за отдельно взятое соединение.
cls_ConnectionHandler (cls_CH).
3. Делвем массив из Классов (40) штук.
3. Загружаем каждый инстанс контрола парсируя его внутрь класса.
4. Оформляем события с массива контролов на массив классов.
5. Внутрь класса прописываем события.

6. На ГУИ клиента делаеться грид со статусом каждого соединения.
7. ГУИ клиента делаем 2 режима - предать комманду всем (выбраным)
клиентам (могут быть все или 1).
------------------------------------------------------------------------------------------------------------
Сервер.

1. Обработка запросов ответов только через очередь с таймаутами.
2. Шифровка данных on-the-fly.
3. Скриптовый движок + прозрачная система процедур ...
------------------------------------------------------------------------------------------------------------
Ням-ням! Системка выходит! Вообщем так - если нуна 8) -
Я готов помочь с клиентом и остальным - если ты будешь
возиться с реализацией _отдельно-взятого_ диалога масктровки под НТТП запросы ...

У меня есть готовые классы для пакетной (!) зашифрованой передачи.
Им то как раз нехватает функции мимикрирования под НТТП.
... Dpkjvfnm dc`xnj itdtkbnmcz, f tckb yt itdtkbnmcz hfcitdtkbnm b dpkjvfnm !!! ...

Scuder
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 334
Зарегистрирован: 17.08.2002 (Сб) 13:18
Откуда: Moscow, Russia

Сообщение Scuder » 10.02.2005 (Чт) 16:55

Это долго объяснять. И пока смысла я в этом не вижу.
(можешь считать что я съехал с сабжекта


:D

т.е. соединение как раз и НЕ рубиться - НО данные пересылать
не получаеться? Так?


Ну, оно рубится на уровне винроута, но не физически.

Извини дарагой! ... Попробуй мене (с пеной у рта - опционально ))) доказать что ты пишешь милый чат, беби-ситтер-контроллер для невинных младенцев и бабушек ))))!
Кто тебе сказал что будет просто? 8ъ?


Нет, пишу я систему приёма платежей. Точнее, она уже написана и давно работает по нестандартному порту. Практически все магазины сидят на GPRS. В некоторых - выделенка, но лояльные провайдеры, без вопросов открывающие порты на всю подсеть. Но в новом магазине столкнулся с идиотизмом. Не хотят открывать порт на всю сеть и всё тут. А выделение прямого IP - денег стоит..

А что тут сложного, на самом деле? Наладить систему клиенты-сервер с "зашитым протоколом" + со свободными SQL-запросами в обе стороны? Ничего сложного.

Почему? Я бы это назвал скорее пакетно-импульсной передачей. Отнюдь не оффлайном. У неё другие серьёзные недостатки - но не эти.


А я говорю - оффлайн! :-) Пока клиент на связь не выйдет, информации не будет.

> Т.е. если я раньше просто делал рассылку на
> все свои клиенты и забывал про это, то теперь придётся ставить
> запросы в очередь, ждать когда клиенты поочереди появятся в
> он-лайне и передавать. ...

???
Тебя же пропускают внутрь? т.е. ты можешь подсоедениться к серверу? В чём же проблема? (имею ввиду что у тебя 40 серваков - клиент - это то чем ты управляешь)
Да кстати - очередь надо реализовать в каждом клиенте.
Обязательно.


Не, стоп. Ты кажется, запутался. :-) Где ты видел 40 серваков и одного клиента?? :-) Клиент - удалённая программа для продавцов. Сервер - это серверная часть, стоящая у меня в офисе, которая принимает и обрабатывает данные, и при необходимости передаёт всем или нескольким клиентам нужную информацию.

> При этом нужно вести хистори - кому отправлено,
> кому - нет.
Нет. Инициализируешь сокет пул в 40 классов,
Массив классов - сокетов ...
соединяешь их с клиентами в цикле ...
Юзаешь малтиинстансинг ...
В итоге - тебе написать-то надо 1 класс.
Если 1 заработает следовательно - все будут!.


Не ешь мне мозги!! :-) У меня есть класс. У меня всё работает. Единственное, в чём заключается проблема - обход HTTP-инспекторов, т.е. маскировка под http-трафик.

Но задницей чувствую, невозможно реализовать постоянный коннект по 80-му порту в соответствии со спецификацией протокола. Ведь интернет - он же тоже оффлайн. Браузер запросил информацию, сервер передал. И всё - до свидания! Если ещё чего нужно - спрашивай, а коннект держать я с тобой не буду..

Поэтому. Винроут, следуя правилам, отслеживает: количество информации, заявленное в заголовке передано, следовательно и клиент и сервер должны отключится. А если не отключатся, значит вирусняк! Значит сам отключу!

Отсюда вывод: либо ставить GPRS/открывать порты, либо юзать оффлайн. Оффлайн мне не интересен. Таким макаром лучше по почте информацию передавать.

Однако, интересно, как работает ICQ, если её любимый порт закрыт? Она ведь тоже начинает маскироваться под http и юзать 80-й порт. Но в любой момент клиент доступен для сервера. Не шлёт же она ежесекундно запросы к нему?

Код: Выделить всё
У него будет огомный плюс - он проходит по ХТТП проксям!
Ловишь про что я? Если скодить нормальный протокол - т.е. полностью
отвечающий РФСи ... то это будет круто ...


Да ё-моё! Чего там кодить-то? Заголовки к данным приписать? Это и школьник сможет сделать..

Супер клиент.
1. Делаем массив Винсоков (40)
[...]
Сервер.
[...]
Ням-ням! Системка выходит! Вообщем так - если нуна -
Я готов помочь с клиентом и остальным - если ты будешь
возиться с реализацией _отдельно-взятого_ диалога масктровки под НТТП запросы ...

У меня есть готовые классы для пакетной (!) зашифрованой передачи.
Им то как раз нехватает функции мимикрирования под НТТП.


Гы! Приколист!! :-) А как часто ты собираешься опрашивать клиентов на предмет появления новых данных? Моя сеть автоматов по приёму платежей пересылает данные СРАЗУ после внесения денег. Если операторы не висят, то платёж доходит до них в среднем за 10-15 секунд! Из которых 3 секунды уходит на пересылку платежа с автомата на сервер. Т.е. нужно опрашивать клиентов каждые 3 секунды. Т.е. каждые 3 секунды передавать пакет информации клиенту и получать какой-нибудь ответ. А если у меня будет 1000 клиентов? Гы. :-) Да любой сервак умрёт от такой очереди! Или провайда нах отключит. Уже не говоря о трафике! :-)

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

Сообщение alibek » 10.02.2005 (Чт) 17:05

Клиенты раз в 15 секунд посылает запрос к серверу. Запрос маленький и смысл его в "есть ли информация?". Сервер отвечает "нет" или "да, информация на 200 байт". Трафик не нагружается и все работает нормально.
Lasciate ogni speranza, voi ch'entrate.

Scuder
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 334
Зарегистрирован: 17.08.2002 (Сб) 13:18
Откуда: Moscow, Russia

Сообщение Scuder » 10.02.2005 (Чт) 17:18

alibek писал(а):Клиенты раз в 15 секунд посылает запрос к серверу. Запрос маленький и смысл его в "есть ли информация?". Сервер отвечает "нет" или "да, информация на 200 байт". Трафик не нагружается и все работает нормально.


Вот я уже писал: для этого необходимо организовывать очередь сообщений, хранить их в одной таблице, а в другой - хранить историю (отправлено оно на клиента №578 или нет). К тому же опять - сервер будет каждые 15 секунд обрабатывать X запросов. Это не есть хорошо. Сейчас у меня клиенты раз в 10 минут отсылают "технический запрос" - типа, я на связи, GPRS работает. Этот запрос состоит из 10 байт. На это в месяц уходит доллара 2. Если я буду каждые 15 секунд (в 40 раз чаще!!) слать запросы серверу (при условии, что http-заголовки не считаются трафиком :-) ), у меня в месяц на одного клиента будет уходить 80 долларов! Это только на технические запросы. :-) А увеличивать интервал опросов больше 30 секунд не хочется..

Короче, думаю я, что лучше забить на эту идею, поскольку система уже давно написана и отлажена. И не фиг выпендриваться. Нужно ставить GPRS и спокойно себе работать..

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

Сообщение alibek » 10.02.2005 (Чт) 19:15

Очередь реализуется не так уж и сложно, надо просто подойти к этому вопросу комплексно. Трафик это да, таким образом его не сэкономишь. Но что-то непонятно.
Одно сообщение в десять минут выходит 43 Кб/месяц. Ты хочешь сказать, что 43 Кб стоят два доллара?
Lasciate ogni speranza, voi ch'entrate.

Scuder
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 334
Зарегистрирован: 17.08.2002 (Сб) 13:18
Откуда: Moscow, Russia

Сообщение Scuder » 11.02.2005 (Пт) 11:20

alibek писал(а):Очередь реализуется не так уж и сложно, надо просто подойти к этому вопросу комплексно. Трафик это да, таким образом его не сэкономишь. Но что-то непонятно.
Одно сообщение в десять минут выходит 43 Кб/месяц. Ты хочешь сказать, что 43 Кб стоят два доллара?


На счёт очереди - да не так сложно.
Насчёт трафика ошибся с 2-мя долларами. :-) Копейки, на самом деле получаются.. Хотя откуда тогда выходит 5 долларов в месяц.. А, абонентка билайновская, видимо.. Но не важно. Трафик всё равно вырастет раз в 300, это не очень хорошо. Да и сама система опросов мне не нравится.. :-)


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

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

Сейчас этот форум просматривают: AhrefsBot и гости: 158

    TopList