Zeromq: Wie der Zugriff auf tcp-Nachricht in c++

Ich bin ein neues zu ZeroMQ und meinen Weg durch die C++ - hello-world-Beispiel des echo-client-server-Muster (Request-Reply). Der server sieht wie folgt aus:

//
//Hello World server in C++
//Binds REP socket to tcp://*:5555
//Expects "Hello" from client, replies with "World"
//
#include <zmq.hpp>
#include <string>
#include <iostream>
#include <unistd.h>

int main () {
    //Prepare our context and socket
    zmq::context_t context (1);
    zmq::socket_t socket (context, ZMQ_REP);
    socket.bind ("tcp://*:5555");

    while (true) {
        zmq::message_t request;

        //Wait for next request from client
        socket.recv (&request);
        std::cout << "Received Hello" << std::endl;

        //Do some 'work'
        sleep (1);

        //Send reply back to client
        zmq::message_t reply (5);
        memcpy ((void *) reply.data (), "World", 5);
        socket.send (reply);
    }
    return 0;
}

Nun meine Frage: Wie kann ich den Zugriff /Lesen Sie die realen Daten, die Buchse.recv() ? Versuch:

 std::cout << request << std::endl;

führte zu einer Fehlermeldung:

 error: no match for operator<<’ in std::operator<< [with _Traits = 
 std::char_traits<char>](((std::basic_ostream<char, std::char_traits<char> >&)
 (& std::cout)), ((const char*)"Received Hello")) << request

Das gleiche gilt für die client-Seite, die die Nachricht sendet. Ich nicht finden, eine Weg, um die wahre Botschaft...

  • Ich glaube, der ZeroMQ Dokumentation-Beispiele in C++. Haben Sie schaute auf die?
  • Du hast Recht, es ist ein Eintrag für zmq_msg_data, der sagt: "Die zmq_msg_data () - Funktion wird wieder ein Zeiger auf den Inhalt der Nachricht des message-Objekts verwiesen wird, die von msg." Aber wie mache ich das explizit?
  • Nein, ich meine die Guide ist voll von C++ code-Beispiele.
  • Ich lese die Anleitung, aber leider ist es nicht das, was ich Suche...
  • hast du den guide gelesen ? Wenn Sie haben, dann würden Sie erkennen an den oben genannten code als aus dem Reiseführer. Dort sagt man einfach "empfangen Hallo", anstatt wirklich nach dem Lesen der Nachricht, die gesendet wurde. Ich habe tatsächlich kommen hier für die sehr gleiche Frage wie der OP.
InformationsquelleAutor dhpizza | 2012-06-05
Schreibe einen Kommentar