Обсуждение статьи "Работа с сокетами в MQL, или Как стать провайдером сигналов"

 

Опубликована статья Работа с сокетами в MQL, или Как стать провайдером сигналов:

Сокеты… Что вообще сейчас в нашем информационном мире может без них существовать? Впервые появившиеся в 1982 г. и практически не изменившиеся до настоящего времени, они исправно работают на нас каждую секунду. Это основа сети, нервные окончания нашей Matrix, в которой мы живем.

В статье описан принцип создания асинхронных TCP и UDP сокетов.  Показано несколько практически примеров взаимодействия сервера и клиентов.




Автор: o_O


Версии библиотеки

1.01 - исправлено копирование структур на union

Файлы:
MQL5.zip  27 kb
 

Статья написана круто, вот только цель применения? Это настолько низкоуровневая технология, даже простенький примерчик потребовал столько писанины, а если что-то серьезное?

В Маркет все равно не выложить, а для себя лучше использовать WCF. Ну или wininet.dll , если что-то несложное, благо она уже в составе Windows.

Да, для WCF придется делать связь с .NET, зато потом жизнь становиться праздником. Обмениваемся на пакетами байт, как которые потом надо разбирать на составляющие, а прямо экземплярами классов. Хочешь, работай в любом режиме - http, бинарном, https и всех прочих. При этом весь геммор с авторизацией, парсингом и т.д. уже взяли на себя парни из Майкрософт.

Статью можно оценить как исторический экскурс в те времена, когда память на компе была 640 Кб, а винт 40 Мб(именно мегабайт :) Автору респект, вспомнил молодость ))

Основные сведения о WinInet
Основные сведения о WinInet
  • msdn.microsoft.com
Если производный объект CInternetSession, переопределите OnStatusCallback и включить обратные вызовы состояния, MFC вызывает пользовательскую функцию OnStatusCallback со сведениями о ходе выполнения о работе полностью в этом сеансе Интернета. Поскольку один сеанс может поддерживать несколько подключений (, по своим времени существования, можно...
 

совершенно верно, есть много методов.

но задача всё также стоит актуальная - меньше самописных dll.   И объемы доступной памяти вообще никаким боком здесь не стоят.

в маркете такие вещи, что касается серверной части, вряд ли появятся, политика МК пока что позволяет ставать только потребителем информации и часто в рамках песочницы.

А клиентские вполне, как уже появились web запросы и именованные каналы.

 
Alexey Volchanskiy:

Статья написана круто, вот только цель применения? Это настолько низкоуровневая технология, даже простенький примерчик потребовал столько писанины, а если что-то серьезное?

В Маркет все равно не выложить, а для себя лучше использовать WCF. Ну или wininet.dll , если что-то несложное, благо она уже в составе Windows.

Да, для WCF придется делать связь с .NET, зато потом жизнь становиться праздником. Обмениваемся на пакетами байт, как которые потом надо разбирать на составляющие, а прямо экземплярами классов. Хочешь, работай в любом режиме - http, бинарном, https и всех прочих. При этом весь геммор с авторизацией, парсингом и т.д. уже взяли на себя парни из Майкрософт.

Статью можно оценить как исторический экскурс в те времена, когда память на компе была 640 Кб, а винт 40 Мб(именно мегабайт :) Автору респект, вспомнил молодость ))

был бы путь/способ отправить USER_EVENT в терминал из dll, проблем-бы вообще не было - весь функционал который не относится к строго к трейдингу (коммуникации и GUI) можно было-бы вынести вон из терминала..

а так остаётся проблема что асинхронный сокет в mql работать не будет (точнее может но с ограничениями), а синхронный tcp может запросто подвесить советник..:-(

 
Maxim Kuznetsov:

а так остаётся проблема что асинхронный сокет в mql работать не будет (точнее может но с ограничениями)

асинхронный сокет из статьи вас не устраивает?  какие в нём видите ограничения?
 

В MQL5 скоро появятся сырые клиентские(без серверов) сетевые функции, включая UDP.

Контроль по разрешенным спискам IP адресов и URL, как это сейчас работает для WebRequest.

 
o_O:
асинхронный сокет из статьи вас не устраивает?  какие в нём видите ограничения?

во первых в статье UDP, а не TCP. Со всеми вытекающими..

и строго говоря приведён просто неблокирующий сокет, а вовсе не асинхронная работа.

 
o_O:

совершенно верно, есть много методов.

но задача всё также стоит актуальная - меньше самописных dll.   И объемы доступной памяти вообще никаким боком здесь не стоят.

в маркете такие вещи, что касается серверной части, вряд ли появятся, политика МК пока что позволяет ставать только потребителем информации и часто в рамках песочницы.

А клиентские вполне, как уже появились web запросы и именованные каналы.

Так я же написал, проще использовать wininet.dll, все же это слой на уровень выше. Хотя, кто-то до сих пор любит ковыряться в ассемблере )
 
Maxim Kuznetsov:

во первых в статье UDP, а не TCP. Со всеми вытекающими..

и строго говоря приведён просто неблокирующий сокет, а вовсе не асинхронная работа.

)))  да уж...  это пять баллов за прочтение статьи.

 
Alexey Volchanskiy:
Так я же написал, проще использовать wininet.dll

откуда такая уверенность, что wininet.dll заменит сокеты в плане создания сервера?

вы меня ребята удивляете.

Maxim Kuznetsov подумал что статья про UDP

Alexey Volchanskiy считает что там http запросы рассматриваются.

короче это полный улёт, слов нет, судим о книге по обложке.

форум с такими "специалистами" ушел глубоко на дно.

 
o_O:

откуда такая уверенность, что wininet.dll заменит сокеты в плане создания сервера?

вы меня ребята удивляете.

Maxim Kuznetsov подумал что статья про UDP

Alexey Volchanskiy считает что там http запросы рассматриваются.

короче это полный улёт, слов нет, судим о книге по обложке.

форум с такими "специалистами" ушел глубоко на дно.

Разве это форум по низкоуровневому сетевому программированию? )))