【发布时间】:2013-05-15 13:15:02
【问题描述】:
我在我的应用程序中使用 zeromq 子发布模式,但我遇到了一个问题: 我启动子应用并订阅了消息,稍后再启动发布应用,发布应用在半小时或更长时间内不会发布任何消息,此后发布应用会向子应用发布消息,但子应用应用程序在那里被阻止,没有任何消息或某些消息丢失。
如果有人知道问题出在哪里?提前谢谢你。
【问题讨论】:
-
Publisher:#include "stdafx.h" #include
int _tmain(int argc, _TCHAR* argv[]) { void* context = zmq_ctx_new(); void* server = zmq_socket(context, ZMQ_PUB); zmq_bind(服务器, "tcp://192.168.1.212:5555"); printf("等待一个半小时\n");睡眠(1000*60*60*1.5); while(1) { 字符缓冲区 [256] = {0}; sprintf_s(buffer, "%s", "Hello World!"); zmq_send(服务器, 缓冲区, 256, 0); printf("发送: %s\n", 缓冲区);睡眠(1000*60); } 返回 0; } -
订阅者:#include "stdafx.h" #include
int _tmain(int argc, _TCHAR* argv[]) { void* context = zmq_ctx_new(); void* socket = zmq_socket(context, ZMQ_SUB); zmq_connect(socket, "tcp://202.101.xxx.xx:5555"); zmq_setsockopt(socket, ZMQ_SUBSCRIBE, "", 0); while(1) { 字符缓冲区 [256] = {0}; zmq_recv(socket, 缓冲区, 256, 0); printf("recv: %s\n", 缓冲区); } 返回 0; } -
我认为是因为我没有在我的套接字中设置 ZMQ_TCP_KEEPALIVE,对吗?