【发布时间】:2021-07-01 22:13:29
【问题描述】:
我正在尝试制作一个简单的 PUB/SUB 代码,但没有收到任何内容。我将主题设置为空,但仍然没有收到。我究竟做错了什么?我将主题设置为空,以便它对所有内容做出反应,我还尝试将主题设置为“测试”,仍然没有任何反应。
PUB
#include <zmq.h>
#include <stdio.h>
#include <unistd.h>
#include <stdlib.h>
int main (void)
{
void *context = zmq_init(1);
void *socket = zmq_socket(context, ZMQ_PUB);
zmq_connect(socket, "tcp://127.0.0.1:12345");
sleep(1);
char message[15] = "test\n";
while(1) {
zmq_send(socket, message, 15, 0);
sleep(2);
printf("sending..\n");
}
return 0;
}
SUB
#include <zmq.h>
#include <stdio.h>
#include <unistd.h>
#include <stdlib.h>
int main (void)
{
void *context = zmq_init(1);
void *socket = zmq_socket(context, ZMQ_SUB);
zmq_connect(socket, "tcp://127.0.0.1:12345");
zmq_setsockopt(socket, ZMQ_SUBSCRIBE, "", 0);
char string[15] = "";
while(1) {
zmq_recv(socket,string,15,0);
printf("i has received\n");
printf("%s\n", string);
sleep(1);
}
return 0;
}
【问题讨论】:
-
我建议检查所有非空函数的返回值,因为很多函数会使用返回值来指示可能的错误。