【问题标题】:Troubles with zmq_bind() in ZeroMQ binding for MQL4 language用于 MQL4 语言的 ZeroMQ 绑定中的 zmq_bind() 问题
【发布时间】:2015-05-14 07:58:10
【问题描述】:

我正在使用 MT4 并使用链接中给出的包装器 mql4zmq.dll

https://github.com/AustenConrad/mql4zmq

因为我已遵循所有说明并从预编译的特定位置成功加载了 DLLlib 文件。但不能通过zmq_connect(,)zmq_bind(,)与socketbindconnect。请有人帮我解决这个问题。我在这里发布我的代码

// Include the libzmq.dll abstraction wrapper.
#include <mql4zmq.mqh>

//+------------------------------------------------------------------+
//| variable definitions                                             |
//+------------------------------------------------------------------+
int speaker,listener,contextt;

//+------------------------------------------------------------------+
//| expert initialization function                                   |
//+------------------------------------------------------------------+
int init()
  {
//----
   int major[1];int minor[1];int patch[1];
   zmq_version(major,minor,patch);
   Print("Using zeromq version " + major[0] + "." + minor[0] + "." + patch[0]);

   Print(ping("Hello World"));

   Print("NOTE: to use the precompiled libraries you will need to have the Microsoft Visual C++ 2010 Redistributable Package installed. To Download: http://www.microsoft.com/download/en/details.aspx?id=5555");

   contextt = zmq_init(1);
   speaker = zmq_socket(contextt, ZMQ_PUB);
   listener = zmq_socket(contextt, ZMQ_SUB);

   // Subscribe to the command channel (i.e. "cmd").  
   // NOTE: to subscribe to multiple channels call zmq_setsockopt multiple times.
   zmq_setsockopt(listener, ZMQ_SUBSCRIBE, ""); 

   if (zmq_bind(speaker,"tcp://127.0.0.1:5555") == -1) 
   {
      Print("Error binding the speaker!");
      return(-1);  
   } 

有问题

if ( zmq_bind( speaker, "tcp://127.0.0.1:5555" ) == -1 )

它返回 -1 而不是 bind

我已经尝试了所有可能的方法来解开这个谜,但失败了。

如果我记错了请告诉我!!!

【问题讨论】:

  • 是的,@Junaid,Austen 为 MQL4 编码器做了一个很棒的包装器。您最初的体验可能看起来很麻烦,然而,ZeroMQ / MQL4 集成效果很好,并为 MQL4 域带来了无数强大的扩展。 您能否更具体地说明您的测试设置? Print() 输出到 .log 的输出是什么?您尝试过什么来检查真正的 PointOfFailure?你在什么O/S上运行? (端口权限/防火墙规则和例外适用......)等。能够完成这些事情会很棒。 MQL4/ZMQ 很酷,如此,如此,如此强大......
  • 我已经解决了这个谜团,并且能够使用奥斯汀包装类进行绑定和连接。实际上,我与 IP 地址关联的端口没有正确关闭,以后需要释放它。感谢支持
  • 很高兴了解并享受 ZeroMQ 消息传递的强大世界,Junaid
  • @Junaid,我也遇到了同样的问题,你能告诉我你是怎么解决的吗? “与 IP 地址关联的端口未正确关闭,以后需要释放它”是什么意思

标签: message communication zeromq mql4


【解决方案1】:

是的,address/port-在使用中可能会阻止 .bind() / .connect()

正如上面的 cmets 所解决的,有 another post with a similar solution of the same root-cause why the well-formed ZeroMQ-code was still not able to .bind()

地址/端口释放/重用是依赖于操作系统的资源管理问题。为生产级操作开发时要小心。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-05-22
    • 1970-01-01
    • 2012-07-18
    • 2011-06-16
    • 2015-08-06
    • 1970-01-01
    • 2011-05-09
    相关资源
    最近更新 更多