我一直在研究zmq一段时间并实现了一个简化的poc - 模仿我的基础设施设计 - 使用它(特别是使用NetMQ包装器),效果很好。
我的情况是这样的:
将来我计划在一台机器上运行多个客户端,每个客户端都需要与一台服务器进行通信。 (位于不同的机器上)通过多个插座。
我注意到,对于每个我声明并打开明显的套接字,zmq会在内部打开更多,并由它管理。
绑定套接字获取在动态范围内分配的新端口,这很好,
但是虽然我的客户端只显式连接到2个端口,但zmq会自动为他分配15个端口。
我担心,这可能最终会导致港口短缺,这是我非常想避免的情况。问题:
zmq如何分配端口以及显式声明的套接字和端口zmq自动打开的比率是多少?
我可以通过配置或任何其他方式以编程方式控制端口分配吗?
使用民意调查如何影响端口使用?
TNX,
答案 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...
}