[c++] ZeroMQ 프로젝트 예제

ZeroMQ는 네트워크 응용프로그램을 빠르게 구축할 수 있도록 하는 라이브러리로, 메시지 전달을 위한 고급 API를 제공합니다. 이를 통해 서버-클라이언트 구조나 피어 투 피어(P2P) 통신을 쉽게 구현할 수 있습니다.

ZeroMQ의 주요 기능

ZeroMQ C++ 프로젝트 예제

다음은 ZeroMQ를 사용하여 C++로 간단한 클라이언트-서버 예제를 구현하는 방법입니다.

서버 코드

#include <zmq.hpp>
#include <iostream>

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

    while (true) {
        zmq::message_t request;
        socket.recv(request, zmq::recv_flags::none);
        std::string_view message = std::string_view(static_cast<char*>(request.data()), request.size());
        std::cout << "Received request: " << message << std::endl;

        // Process the request
        // ...

        // Send a reply
        zmq::message_t reply(message.data(), message.size());
        socket.send(reply, zmq::send_flags::none);
    }

    return 0;
}

클라이언트 코드

#include <zmq.hpp>
#include <string>
#include <iostream>

int main() {
    zmq::context_t context(1);
    zmq::socket_t socket(context, ZMQ_REQ);
    socket.connect("tcp://localhost:5555");

    std::string message = "Hello, server!";
    zmq::message_t request(message.size());
    memcpy(request.data(), message.data(), message.size());
    socket.send(request, zmq::send_flags::none);

    zmq::message_t reply;
    socket.recv(reply, zmq::recv_flags::none);
    std::string_view server_reply = std::string_view(static_cast<char*>(reply.data()), reply.size());
    std::cout << "Received reply from server: " << server_reply << std::endl;

    return 0;
}

위 코드는 간단한 REQ-REP(요청-응답) 패턴을 사용하여 클라이언트와 서버 간에 메시지를 주고받는 예제입니다.

결론

ZeroMQ를 사용하면 빠르고 유연한 네트워크 응용프로그램을 구축할 수 있습니다. C++을 사용하는 경우에도 간단한 API를 통해 ZeroMQ를 통합하여 효과적으로 통신할 수 있습니다.

자세한 내용은 ZeroMQ 공식 사이트에서 확인할 수 있습니다.