Взаимодействие между MQL5 (или C ++) и C # через именованные каналы

Я пытаюсь отправить некоторые данные через именованные каналы. Я создал Named Pipe Server на C # и клиент на MQL5 (это просто оболочка C ++). Сервер работает нормально и может быть получен из клиента именованных каналов, написанного на C #, поэтому связь C # <-> C # работает отлично. Также я попробовал утилиту PipeList, и она также показывает, что мой труба-сервер видна и доступна.

Единственная проблема с клиентом, написанным на MQL5 (C ++) — он не находит путь к трубе, поэтому связь MQL <-> C # терпит неудачу.

Кто-нибудь может предложить:

  • Что я делаю неправильно?
  • как проверить, что и C #, и MQL обращаются к одному и тому же физическому
    путь и то же место?

Сервер:

NamedPipeServerStream pipeStream = new NamedPipeServerStream("MQL5", PipeDirection.In, 1, PipeTransmissionMode.Byte)

Я также пробовал полный путь \\\\. \\ pipe \\ MQL5, но безуспешно

Клиент:

CFilePipe iPipe;

while(IsStopped() == false)
{
Print("This loop is infinite because there is no connection");
if (iPipe.Open("\\\\.\\pipe\\MQL5", FILE_READ | FILE_WRITE | FILE_BIN) != INVALID_HANDLE) break;
Sleep(250);
}

Благодарю.

1

Решение

Ответ найден. Кажется, это была просто моя собственная ошибка или так работает Pipes в MQL — канал всегда должен быть дуплексным, поэтому строку в C # нужно заменить следующим:

NamedPipeServerStream pipeStream = new NamedPipeServerStream(name, PipeDirection.InOut, 1, PipeTransmissionMode.Byte)

Параметр PipeDirection.InOut говорит, что труба двухсторонняя.

Постскриптум Хотя это немного странно, потому что соединение C # Server <-> Клиент C # может работать в обоих режимах (вход / выход или один из них)

1

Другие решения

Сервер: C # / Клиент: MetaTrader

У меня были две другие проблемы:

  1. Клиент и сервер должны быть запущены от имени администратора
  2. Мне нужно было установить размер буфера для ввода и вывода (по умолчанию ноль =>
    динамически рассчитывается => при этом произошла ошибка).
1

По вопросам рекламы [email protected]