1

名前付きパイプを介してデータを送信しようとしています。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);
}

ありがとう。

4

2 に答える 2

1

サーバー: C# /クライアント: MetaTrader

他に2つの問題がありました:

  1. クライアントとサーバーは管理者として実行する必要がありました
  2. 入力と出力のバッファ サイズを設定する必要がありました (デフォルトはゼロ => 動的に計算 => これでエラーが発生しました)。
于 2017-02-01T20:00:05.077 に答える