【问题标题】:ZMQ via C# - clrzmq binding Windows XP fails but is OK on Win7ZMQ via C# - clrzmq 绑定 Windows XP 失败但在 Win7 上正常
【发布时间】:2013-02-06 14:13:14
【问题描述】:

我一直在开发一个使用 ZMQ (2.2) 作为主要通信层的平台。本周早些时候,我决定接受 zeromq 网站上的建议并升级到最新的稳定版本 3.2.2

然而,在经历了更新到新 API 的痛苦之后,我非常失望地发现 clrzmq 绑定似乎存在问题,因为它无法在 Windows XP (SP3) 机器上加载 libzmq 库。我不断收到 SEHException 异常?!

我只是想知道是否有人遇到过同样的问题,是否有解决方法(甚至更好的解决方法)?

干杯 :)

编辑 只是为了澄清一下,库加载得很好,我知道这一点,因为创建上下文没有任何问题。在上下文中调用 CreateSocket 方法时会出现问题...参见下面的代码 sn-p

        ZmqContext context = ZmqContext.Create();

        ZmqSocket socket = context.CreateSocket(SocketType.REQ);

按照 Jakob 的建议添加跟踪后,我得到以下输出

Assertion failed: Connection refused (..\..\..\src\signaler.cpp:310)

任何想法这意味着什么?

编辑 我还应该提到,这个问题不会发生在所有 XP 机器上,只是其中一些。我一直在试图弄清楚可以工作的机器和不工作的机器之间有什么区别。如果不知道这一点,升级并发布到生产环境中风险太大。

【问题讨论】:

  • 您是否尝试打开 clrzmq 的跟踪以查看它是否报告有关失败加载的任何详细信息?在此处查看跟踪选项:github.com/zeromq/clrzmq#tracing
  • @Jakob - 我试过这样做,但由于某种原因,我没有从库中获得任何跟踪输出?我在我的 Skydrive 上上传了一个小样本 (sdrv.ms/12vkVxG)
  • @Jakob - 我想我已经盯着屏幕太久了!!!我确实从图书馆得到了一些回溯(见正文)。
  • 代码编译正常,在我的机器上运行没有任何异常(虽然防火墙有点抱怨,这很正常)。添加了更长的答案和更多的想法。
  • @Jakob - 首先,感谢您抽出宝贵时间查看此内容。当您说将 REQ 绑定到通配符没有意义时,您的回答完全正确。当我敲出示例项目时,我只是随意选择了一个套接字类型。

标签: c# zeromq


【解决方案1】:

查看您提供的示例,您正在绑定到 REQ 套接字(请求,即客户端套接字),并且还使用通配符绑定 REQ 套接字。我不确定这将如何发展,但对我来说这没有意义。我认为这不受支持,但我找不到或不记得任何有关绑定到 REQ 套接字的文档。可能会发生奇怪的事情。

REP(响应)套接字是 REQ/REP 设置(请求/响应)的“服务器”端,您 bind 服务器端使用 REP 套接字连接到端点,明确指定“tcp://127.0.0.1:5555”或使用通配符,例如“所有接口”、“tcp://*:5555”。然后,客户端将 connect 使用 REQ 套接字到显式端点地址“tcp://127.0.0.1:5555”,不使用通配符。

服务器会这样做:

ZmqContext context = ZmqContext.Create();
ZmqSocket socket = context.CreateSocket(SocketType.REP);
socket.Bind("tcp://*:5501");

而客户是这样的:

ZmqContext context = ZmqContext.Create();
ZmqSocket socket = context.CreateSocket(SocketType.REQ);
socket.Connect("tcp://127.0.0.1:5501");

除了这些问题,您还应该确保防火墙没有阻塞,并确保端口没有被使用(例如使用 NETSTAT 命令)。

有关 ZeroMq 寻址规则,请参阅zmq_tcp API documentation,有关套接字,请参阅zmq_socket API documentation

【讨论】:

    猜你喜欢
    • 2014-04-24
    • 2014-02-06
    • 2015-07-18
    • 2015-03-13
    • 1970-01-01
    • 1970-01-01
    • 2012-07-17
    • 2013-02-01
    • 1970-01-01
    相关资源
    最近更新 更多