ZSocket.GetOptionString在clrzmq4中不起作用

时间:2017-11-13 01:02:50

标签: zeromq

系统环境:Windows 7(64位),VS 2013,在64位版本中编译

这是代码:

var clients = new ZSocket(ctx, ZSocketType.ROUTER);
clients.GetOptionString(ZSocketOption.TCP_KEEPALIVE));

如下例外:

  

ZeroMQ.ZException"" EINVAL(22):参数无效""

1 个答案:

答案 0 :(得分:0)

EINVAL ( Error: 22 )被正确抛出:

  

<强> EINVAL
      请求的选项 option_name 未知,或者请求的 option_len option_value无效,或者由 option_value 指定的 option_len 指向的缓冲区大小不足以存储选项值。

必须修复以下列出的两个API不合规问题:

  1. ZeroMQ API将 ZMQ_TCP_KEEPALIVE 套接字配置选项定义为 int 数据类型, a string。使用适当的clrzmq4绑定接口函数来请求 int 类型option_value,这将解决第一个API不合规问题。
  2.         

    Option value type int
      Option value unit { -1 | 0 | 1 }
      Default value -1 ( leave to OS default )
      Applicable socket types all, when using TCP transports.

         
    1. 当且仅当套接字实例配备了 tcp:// 传输类(clients实例时,ZeroMQ API才将此选项定义为有效张贴在上面,不是)。可以在指示socket实例关联第一个 tcp:// 传输类引擎(通过相应使用.connect()或一个.bind())。