如何在zmq的幕后完成端口分配?

时间:2015-08-10 13:37:13

标签: zeromq netmq

我一直在研究zmq一段时间并实现了一个简化的poc - 模仿我的基础设施设计 - 使用它(特别是使用NetMQ包装器),效果很好。

我的情况是这样的:

将来我计划在一台机器上运行多个客户端,每个客户端都需要与一台服务器进行通信。 (位于不同的机器上)通过多个插座。

我注意到,对于每个我声明并打开明显的套接字,zmq会在内部打开更多,并由它管理。

修改

绑定套接字获取在动态范围内分配的新端口,这很好,

但是虽然我的客户端只显式连接到2个端口,但zmq会自动为他分配15个端口。

我担心,这可能最终会导致港口短缺,这是我非常想避免的情况。

问题:

  1. zmq如何分配端口以及显式声明的套接字和端口zmq自动打开的比率是多少?

  2. 我可以通过配置或任何其他方式以编程方式控制端口分配吗?

  3. 使用民意调查如何影响端口使用?

  4. TNX,

1 个答案:

答案 0 :(得分:2)

当你在windows上的zeromq / netmq上创建一个套接字时,一个专用套接字用于在io线程和用户线程之间发出信号,这个套接字有两个端口。如果你调用bind,你可以用你选择的端口绑定另一个端口。

专用套接字正在使用动态端口范围(netmq),因此如果您远离该范围,则不会有任何问题。

Windows Vista及更高版本的动态端口范围是49152,直到65535

端口计数代码:

    if let ship = contact.bodyA.node as? Ship {
        // here you have your ship...
    } else if let ship = contact.bodyB.node as? Ship {
        // here you have your ship...
    }