如何用ZeroMQ实现多个socket?

问题描述 投票:0回答:1

我有这样的实现,可以创建一个socket。

if (gctx == nullptr)
    {
        gctx = zmq_ctx_new();
        gsock = zmq_socket(gctx, ZMQ_REQ);
    }

    snprintf(url, sizeof(url), "wsd:///tmp/hfg/%s", name);
    int rc = zmq_connect(gsock, url);
    if (rc != 0)
        printf("error connect %s: %s\n", url, zmq_strerror(zmq_errno()));

    return rc;

但我希望能够创建多个socket,而不是只有一个。如何实现呢?我是否也需要多个contexts?我的意思是每个套接字都要有一个上下文。

c sockets c++11 zeromq
1个回答
0
投票

Q : " 我是否也需要多个上下文?"

不,你不需要。


如果一个人从未与 ZeroMQ在这里,我们可以先看看 "ZeroMQ。原则 不到 五秒" 刨根问底


Q : " 这怎么做?"

gSock1 = zmq_socket( gCTX, ZMQ_REQ ); // 1st REQ-uester
gSock2 = zmq_socket( gCTX, ZMQ_REQ ); // 2nd
gSock3 = zmq_socket( gCTX, ZMQ_PUB ); // 1st PUB-lisher
gSock4 = zmq_socket( gCTX, ZMQ_PUB ); // 1st PUB-lisher

的实例,就像给每个实例分配尽可能多的 Socket()-类(或zmq_socket()调用)。默认的 Context()-实例,即主要的消息传递处理引擎,可以保持 "共享",也可以根据需要增加IO线程的数量,或者根据需要微调其他配置细节,甚至可以将处理工作分配给几个 Context()-如有需要,可提供相关资料。

© www.soinside.com 2019 - 2024. All rights reserved.