【问题标题】:Dynamic creation of a peer-peer socket (ZeroMQ)动态创建对等套接字 (ZeroMQ)
【发布时间】:2018-08-31 18:25:15
【问题描述】:

我的目的是在 C 中动态创建一些 ZeroMQ 套接字(点对点)。

我的服务器中有一个监听套接字,当客户端发送消息时,我分配一个新端口并与这个新端口建立连接,然后我返回我的监听套接字。

例如:

  • 服务器监听 8500 端口
  • 客户端1向8500发送消息
  • 服务器发送一个新的端口号 8510
  • 服务器和客户端在8510端口建立连接
    (客户端断开 8500 端口的连接)
  • 服务器监听其他连接
  • 客户端2向8500发送消息
  • 服务器发送一个新的端口号 8511 ...

我应该使用什么类型的 ZeroMQ 函数?

我在考虑 FD 和 select,但可能与 ZeroMQ 或 zmq_poll() 不兼容,但我对此感到困惑。

【问题讨论】:

    标签: sockets zeromq


    【解决方案1】:

    我应该使用什么类型的 ZeroMQ 函数?

    好吧,上面的场景肯定会使用 许多 函数来实现这一点,但该方法将取决于您决定使用哪个原生 API 版本,这取决于远程代理的数量你喜欢让我们假设最低水平 2.1+。


    服务器端很可能会使用所有这些:
    - 版本自检:zmq_version()
    - 上下文实例化:zmq_init()
    - 上下文参数化:并非所有原生 API 版本中都存在,请查看 API 文档
    - 套接字实例化:zmq_socket()
    - 套接字设置:zmq_setsockopt()
    - 基础设施元素上的套接字传输类锁定zmq_bind( { inproc://...| ipc://...| tcp://...:# | pgm://...:# | epgm://...:# | vmci://... } ) vmci:// 传输类不存在于所有本机 API 版本中
    - 消息资源和状态管理操作[ zmq_msg_init(), zmq_msg_copy(), ..., zmq_msg_close() ]
    - 套接字“读取”,最好的非阻塞,带有预“嗅探”投票zmq_recv() + zmq_poll()
    - 套接字“发送”,最好的非阻塞zmq_send()
    - 本地“事件”循环,还检查 zmq_errno() 是否存在错误和 zmq_strerror() 使其更易于阅读
    - 套接字资源释放:zmq_close()
    - 上下文资源发布:zmq_term()


    客户端很可能会使用所有这些:
    - 版本自检:zmq_version()
    - 上下文实例化:zmq_init()
    - 上下文参数化:并非所有原生 API 版本中都存在,请查看 API 文档
    - 套接字实例化:zmq_socket()
    - 套接字设置:zmq_setsockopt()
    - 使用相应的传输类匹配参数{ inproc://...| ipc://...| tcp://...:# | pgm://...:# | epgm://...:# | vmci://... } ) vmci:// 传输类不存在于所有本机 API 版本中时间>
    - 消息资源和状态管理操作[ zmq_msg_init(), zmq_msg_copy(), ..., zmq_msg_close() ]
    - 套接字“读取”,最好的非阻塞,带有预“嗅探”投票zmq_recv() + zmq_poll()
    - 套接字“发送”,最好的非阻塞zmq_send()
    - 本地“事件”循环,还检查zmq_errno() 是否存在错误和zmq_strerror(),使其更易于阅读
    - 套接字资源释放:zmq_close()
    - 上下文资源发布:zmq_term()


    如果困惑,最好的下一步,如上报告:

    最好的起点——如果真的愿意深入了解专业的 的设计,那就是理解一个零之禅,正如 Pieter HINTJENS 的书“Code Connected, Volume 1”中所描述的那样。读起来不容易,但值得花时间和精力开始阅读。

    【讨论】:

      猜你喜欢
      • 2013-05-15
      • 1970-01-01
      • 2015-01-10
      • 2023-03-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多