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

Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
Vadim Konyaev
9013
Vadim Konyaev  
Ilya Baranov:

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

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

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

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

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

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

Dmitiry Ananiev
9138
Dmitiry Ananiev  

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

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

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

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

Vladimir Simakov
5840
Vladimir Simakov  
Dmitiry Ananiev:

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

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

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

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

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

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

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

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

12
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий