我有这个实现来创建一个套接字:
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;
但是我希望能够创建多个套接字,而不仅仅是一个。这是怎么做的?我还需要多个上下文吗?我的意思是为每个套接字一个上下文。
最佳答案
Q : " Do I also need multiple contexts? "
不,您不需要。
如果您从未使用过ZeroMQ,可以在深入了解更多细节之前先浏览"ZeroMQ: Principles in less than Five Seconds"
Q : " How is this done? "
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()
-class实例(或zmq_socket()调用)一样简单。默认的 Context()
-instance(主要的消息传递处理引擎)可能会保持“共享”状态,或者可能会增加IO线程的数量(如果需要)和/或根据需要对其其他配置详细信息进行微调,甚至拆分处理如果需要,可以在几个Context()
-instances之间进行工作负载。
关于c - 如何使用ZeroMQ实现多个套接字?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62384729/