में टीसीपी संदेश का उपयोग कैसे करें मैं ज़ीरोएमक्यू द्वारा नया हूं और ईको क्लाइंट-सर्वर पैटर्न (अनुरोध-उत्तर) के सी ++ हैलो-वर्ल्ड उदाहरण के माध्यम से अपना रास्ता बना रहा हूं। सर्वर इस तरह दिखता है:ज़ीरोमक: सी ++
//
// 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;
}
अब मेरा प्रश्न: मैं socket.recv() के वास्तविक डेटा को कैसे एक्सेस/पढ़ सकता हूं? कोशिश कर रहा है:
std::cout << request << std::endl;
एक त्रुटि संदेश के परिणामस्वरूप:
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’
एक ही ग्राहक के पक्ष कि संदेश दे रहा है के लिए चला जाता है। मैं वास्तविक संदेश को प्रदर्शित करने का रास्ता मिल नहीं है ...
मेरा मानना है कि ZeroMQ प्रलेखन सी ++ में उदाहरण है। क्या आपने उन पर देखा है? – larsks
आप सही हैं, zmq_msg_data के लिए एक प्रविष्टि है जो कहती है "zmq_msg_data() फ़ंक्शन संदेश द्वारा संदर्भित संदेश ऑब्जेक्ट की संदेश सामग्री में एक सूचक लौटाएगा।" लेकिन मैं इसे स्पष्ट रूप से कैसे करूं? – dhpizza
नहीं, मेरा मतलब है [गाइड] (http://zguide.zeromq.org/) सी ++ कोड उदाहरणों से भरा है। – larsks