Вопрос по pipes - страница 2

 
Ilya Baranov:

При использовании CFilePipe есть ли способ узнать, что сервер отключился?

Проверяю при запуске клиента на MQL - пока сервер не запущен Open (FileOpen) возвращает INVALID_HANDLE. Запускаю сервер - получаю корректный хендл и дальше работаю с ним.

Но если сервер остановить, то клиент на MQL ничего не замечает. Пробовал функции SIze (FileSize), IsEnding (FileIsEnding), но они возвращают корректные значения и ошибки (GetLastError) не возникает.

Как можно обнаружить отключение сервера?

Или только по прекращению трансляции "сердцебиения" от сервера?

С помощью внешнего скрипта-монитора в одну и в другую сторону...

 

1. где то видел pipe-server на этом ресурсе. т.е. данные передаются через сервер. 

2. В качестве обмена информацией мне больше понравился обмен через RAM. Тоже используется DLL , и есть библа Memlib кажется. Очень просто происходит обмен. Скорость обмена на скорости шины. При этом процессор не грузится совсем. 

3. fxsaber не так давно придумал способ обмена через глобальныую переменную. При этом передавать можно любую инфу. 

4. Самый замороченный для оказался способ через сокеты.

 
Dmitiry Ananiev:

1. где то видел pipe-server на этом ресурсе. т.е. данные передаются через сервер. 

2. В качестве обмена информацией мне больше понравился обмен через RAM. Тоже используется DLL , и есть библа Memlib кажется. Очень просто происходит обмен. Скорость обмена на скорости шины. При этом процессор не грузится совсем. 

3. fxsaber не так давно придумал способ обмена через глобальныую переменную. При этом передавать можно любую инфу. 

4. Самый замороченный для оказался способ через сокеты.

Я, для себя, на общей памяти остановился (MappViewOfFile).
 
Как вариант моя библиотека: https://www.mql5.com/ru/forum/294746
Библиотека (dll): Shared Nodes Library (Библиотека разделяемых узлов) Обмен данными между советниками, индикаторами, скриптами и внешними программами
Библиотека (dll): Shared Nodes Library (Библиотека разделяемых узлов) Обмен данными между советниками, индикаторами, скриптами и внешними программами
  • 2018.12.13
  • www.mql5.com
Библиотека реализует простой механизм обмена данными как внутри терминала (между советниками, индикаторами и скриптами), так и с внешними программа...
 

Всем спасибо.

Но нужна связь за пределы терминала,с внешним приложением на C# без использования Dll.

Вариантов, как понимаю, есть 3: через файлы, через Pipe или через Tcp. Первый вариант слишком медленный. Из оставшихся Pipe удобен тем, что можно не указывать номер порта. Но похоже, что обнаружить на стороне терминала отключение сервера невозможно... Весьма неудобно.

Причина обращения: