2016-11-24 1 views
0

J'ai implémenté un exemple simple pub/sub. J'envoie un simple message hello et j'essaie de le recevoir chez l'abonné. Mon code d'éditeur est -Abonné à l'éditeur Zero MQ (pub/sub)

std::string msg = "hello,"; 
zmq::message_t message(static_cast<const void*> (msg.data()), msg.size()); 
publisher.send(message); 

Mon code d'abonné -

zmq::message_t msgReceive; 
subscriber.recv(&msgReceive); 
const char* buffer_body = static_cast<const char*>(msgReceive.data()); 
printf("Message: %s\n",buffer_body); 

La sortie je reçois est - "bonjour, Socket-Type" au lieu de "bonjour",

I suis incapable de comprendre où est l'erreur. Toute aide serait appréciée.

Répondre

1

Essayez de changer cette ligne

const char* buffer_body = static_cast<const char*>(msgReceive.data()); 

à

const char* buffer_body = static_cast<const char*>(msgReceive.data(), msgReceive.size()); 

De cette façon, vous pouvez dire au C_ALPHA où prennent fin en fonction de la longueur du message plutôt que de le laisser terminer lui-même quand il trouve le premier caractère nul.

Pour plus d'informations, voir the guide.