首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MQL5 (或C++)与C#通过命名管道的交互作用

MQL5 (或C++)与C#通过命名管道的交互作用
EN

Stack Overflow用户
提问于 2013-08-10 09:58:36
回答 2查看 2.6K关注 0票数 1

我正试图通过命名管道发送一些数据。我在C#中创建了命名管道服务器,在MQL5中创建了客户机(它只是一个C++包装器)。服务器工作正常,可以从用C#编写的命名管道客户端到达,因此通信C# <-> C#工作精细。另外,我尝试了实用程序PipeList,它还显示了我的管道服务器是可见的和可用的。

唯一的问题是用MQL5 (C++)编写的客户机--它找不到管道服务器的路径,因此通信MQL <-> C#失败了

有谁能建议:

  • 我做错什么了?
  • 如何检查C#和MQL是否都访问相同的物理路径和相同的位置?

服务器:

代码语言:javascript
复制
NamedPipeServerStream pipeStream = new NamedPipeServerStream("MQL5", PipeDirection.In, 1, PipeTransmissionMode.Byte) 

我还尝试了完整的路径\\.pipe\MQL5 5,但没有成功。

客户端:

代码语言:javascript
复制
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);
}

谢谢。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-08-10 12:10:02

找到答案了。这似乎只是我自己的错误,或者这就是MQL通道中管道工作的方式--通道总是需要双工的,所以C#中的线路需要替换为以下内容:

代码语言:javascript
复制
NamedPipeServerStream pipeStream = new NamedPipeServerStream(name, PipeDirection.InOut, 1, PipeTransmissionMode.Byte)

参数PipeDirection.InOut说管道是双向的.

尽管这有点奇怪,因为连接C#服务器<-> C#客户端可以在两种模式下工作(进入/退出或其中之一)。

票数 1
EN

Stack Overflow用户

发布于 2017-02-01 20:00:05

服务器: C# /客户端: MetaTrader

我还有两个问题:

  1. 客户端和服务器需要作为管理员运行
  2. 我需要为输入和输出设置缓冲区大小(默认为零=>,动态计算的=>,这上面有一个错误)。
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18160777

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档