OberonCore

Библиотека  Wiki  Форум  BlackBox  Компоненты  Проекты
Текущее время: Четверг, 13 Август, 2020 05:41

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ Сообщений: 7 ] 
Автор Сообщение
 Заголовок сообщения: Http (от Josef Templ) посыл-прием пакетов
СообщениеДобавлено: Пятница, 20 Март, 2020 17:35 

Зарегистрирован: Вторник, 29 Ноябрь, 2011 08:46
Сообщения: 34
Вот смотрю расширение Http и не могу понять, какие его модуль и процедуры вызывают команды windowds API (работа с сокетами), чтобы отправить уже сформированный сетевой пакет в сеть (на роутер) или принять его?

Преобразует ли (обволакивает, перекодирует) windowds этот сетевой пакет, или оставляет неизменным байт в байт?


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Пятница, 20 Март, 2020 17:59 
Аватара пользователя

Зарегистрирован: Суббота, 16 Февраль, 2008 02:47
Сообщения: 278
ddn1 писал(а):
Вот смотрю расширение Http и не могу понять, какие его модуль и процедуры вызывают команды windowds API (работа с сокетами), чтобы отправить уже сформированный сетевой пакет в сеть (на роутер) или принять его?

Преобразует ли (обволакивает, перекодирует) windowds этот сетевой пакет, или оставляет неизменным байт в байт?


Кмк, работа с сокетами делается в CommTCP, а не в подсистеме Http. Если речь про HTTPS, то HttpCommSSL.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Пятница, 20 Март, 2020 19:55 

Зарегистрирован: Вторник, 29 Ноябрь, 2011 08:46
Сообщения: 34
adimetrius писал(а):
Кмк, работа с сокетами делается в CommTCP, а не в подсистеме Http.
Ну его же (CommTCP) надо импортировать, а модули HttpServers и HttpWeb его (WinApi как оказалось, а не CommTCP) не импортируют. Видимо они только формируют пакеты.

adimetrius писал(а):
Если речь про HTTPS, то HttpCommSSL.
То есть по протоколу HTTP (без шифрования) пакеты в сеть не отправяются? Логично тогда назвать расширение Https.

Вот схема импорта расширения Http:
Код:
HttpServers (IMPORT Strings, Services, CommStreams, Files, Dates, StdLog)
   HttpWeb (IMPORT HttpServers, Files := Files64, Strings)
      HttpCmds (IMPORT HttpServers, HttpWeb, Strings, Files, CommStreams, TextModels, TextViews, Views)
WinApi
   HttpOpenssl ["libssl32"] (IMPORT WinApi)
      HttpCommSSL (IMPORT SYSTEM, WinNet, Strings, Dialog, CommStreams, HttpOpenssl, StdLog)
         HttpSSLCmds (IMPORT CommSSL := HttpCommSSL, CommStreams, TextModels, TextViews, Views)


Хочу написать (и скомпилировать на чем-нибудь) свой сервер, чтобы можно было программно работать с интернетом, с прокси, с поисковиками, загружать и раздавать файлы и т.д., потому что сторонний софт так работать не умеет. Поскольку в этих IT протоколах и миллионе "технологиях" я ни черта не разбираюсь - документация у них расплывчатая, свой птичий сленг и все на английском, то причесанная, без лишнего мусора реализация на понятном Паскале может помочь разобраться, как это работает, для начала в общих чертах. Смотрел сетевые модули A2, они довольно сложные и вообще там много лишнего логирования всего подряд, у Josef Templ-а смотрится проще. Лет через 30 может разберусь.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Пятница, 20 Март, 2020 20:03 
Администратор

Зарегистрирован: Вторник, 15 Ноябрь, 2005 01:14
Сообщения: 4442
Откуда: Россия, Орёл
ddn1 писал(а):
adimetrius писал(а):
Кмк, работа с сокетами делается в CommTCP, а не в подсистеме Http.
Ну его же (CommTCP) надо импортировать, а модули HttpServers и HttpWeb его (WinApi как оказалось, а не CommTCP) не импортируют. Видимо они только формируют пакеты.

Его не надо импортировать. Он загружается динамически, так как указан в параметрах процедуры CommStreams.NewListener. Смотрите документацию и примеры подсистемы Comm. В частности CommObxStreamsServer.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Пятница, 20 Март, 2020 21:54 
Аватара пользователя

Зарегистрирован: Суббота, 16 Февраль, 2008 02:47
Сообщения: 278
ddn1,

я согласен с Борисом. Http не импортирует CommTCP, и вообще не импортирует напрямую ни один транспортный протокол-модуль. Наименование модуля-транспорта передается как строка, и модуль-транспорт загружается динамически (не через IMPORT, а через Dialog.Call). И в этом красота и мосчь: Http может работать с произвольными транспортами, возможно, написанными позже, чем сама Http.
Вот команда запуска сервера:
Код:
KeepRemote.StartHttpServer('CommTCP', '0.0.0.0:1081', '/BB/')

Как видите, я использую транспорт CommTCP, а мог бы указать HttpCommSSL

На Templ's Http я смог быстро сделать сервер для обслуживания запросов моего приложения. Для обычного веб-сервера - т.е. для раздачи html-файлов - уже все реализовано в Http, только запустить, программировать ничего не надо. И, кста, это самое внятное и лаконичное определение веб-сервера, которое я встречал, как раз в духе оберона. И как раз для изучения. Сложностью может быть, пожалуй, использованная - вполне уместно - машина состояний, чтобы разбить обработку запроса на этапы; но тоже довольно ясно все сделано.

К сожалению, Хттп построена только как сервер. Чтобы получить документ по http, я пользовался модулем от Ивана Денисова. А было бы логично и здорово, чтобы Хттп-клиент и Хттп-сервер пользовались единым набором Хттп-понятий.

Ну и еще, Джозеф широко использовал SHORTCHAR, что вызывало у меня сильное раздражение.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Пятница, 20 Март, 2020 22:21 

Зарегистрирован: Понедельник, 28 Ноябрь, 2005 10:28
Сообщения: 1295
ddn1 писал(а):
Вот смотрю расширение Http и не могу понять, какие его модуль и процедуры вызывают команды windowds API (работа с сокетами), чтобы отправить уже сформированный сетевой пакет в сеть (на роутер) или принять его?


Никакие. И сетевые пакеты там не формируются. Этим занимается windows.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Суббота, 21 Март, 2020 05:21 
Аватара пользователя

Зарегистрирован: Четверг, 08 Октябрь, 2009 15:00
Сообщения: 2810
В GNU/Linux это расширение Йозефа тоже работает, кстати. Проверял https://community.blackboxframework.org ... t=162#p928


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 7 ] 

Часовой пояс: UTC + 3 часа


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

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 3


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

Найти:
cron
Вся информация, размещаемая участниками на конференции (тексты сообщений, вложения и пр.) © 2005-2020, участники конференции «OberonCore», если специально не оговорено иное.
Администрация не несет ответственности за мнения, стиль и достоверность высказываний участников, равно как и за безопасность материалов, предоставляемых участниками во вложениях.
Без разрешения участников и ссылки на конференцию «OberonCore» любое воспроизведение и/или копирование высказываний полностью и/или по частям запрещено.
Powered by phpBB® Forum Software © phpBB Group
Русская поддержка phpBB