Hi
    The sub program run on 172.31.9.177, the pub program run on
172.18.94.76.
If the pub doesn't pub the message for more than 2 hours, after 2 hours pub
publish
message again. But the sub can't get message anymore. I also use wireshark
to capture the packets. Pub indeed send message to sub, sub also ACK.  So
the tcp link has no problem.

  Meanwhile I run sub on pub's machine(172.18.94.76), after 2 hours, this
sub can still
get messages published by pub.
   What happen to my sub? thanks!
[image: 内嵌图片 1]


  Code is very simple, I use libzmq-v100-mt-4_0_4.dll

=========Pub code ==================
void testPub(){
const char *bindAddress = "tcp://*:18001";
void *ctx = zmq_ctx_new();
assert(ctx);
void *pub = zmq_socket(ctx,ZMQ_PUB);
assert(pub);
int ret = zmq_bind( pub, bindAddress);
assert(ret == 0);
int i=0;

QString AStr = QString("A message Num %1");
QString BStr = QString("B message Num %1");

while(true){
i++;
ret = zmq_send(pub, "A" , 1, ZMQ_SNDMORE);
assert(ret>0);
ret = zmq_send(pub, AStr.arg(i).toAscii().data() , AStr.length(), 0);
assert(ret>0);
qDebug()<<AStr.arg(i);

ret = zmq_send(pub, "B" , 1, ZMQ_SNDMORE);
assert(ret>0);
ret = zmq_send(pub, BStr.arg(i).toAscii().data() , BStr.length(), 0);
assert(ret>0);
qDebug()<<BStr.arg(i);

//getchar();
Sleep(10000);
}
}


==============sub code =======================

void testSub(){
const char *bindAddress = "tcp://172.18.94.76:18001";
void *ctx = zmq_ctx_new();
assert(ctx);

void *sub = zmq_socket( ctx, ZMQ_SUB);
assert(sub);

int ret = zmq_setsockopt( sub, ZMQ_SUBSCRIBE, "A", 1);
assert( ret== 0);
ret = zmq_setsockopt( sub, ZMQ_SUBSCRIBE, "B", 1);
assert( ret== 0);

ret = zmq_connect( sub, bindAddress);
assert( ret == 0);

char buf[100];
while(true){
ret = zmq_recv( sub, buf, 99, 0);
assert(ret > 0);
buf[ret] = '\0';
qDebug()<<buf;

ret = zmq_recv( sub, buf, 99, 0);
assert(ret > 0);
buf[ret] = '\0';
qDebug()<<buf;
}
}


Regards
 Jimmy
_______________________________________________
zeromq-dev mailing list
[email protected]
http://lists.zeromq.org/mailman/listinfo/zeromq-dev

Reply via email to