[c++] ZeroMQ 동기식 메시지 송수신
ZeroMQ는 메시지 큐를 사용하여 데이터를 송수신하는 데 널리 사용되는 고성능 라이브러리입니다. 특히 C++에서 ZeroMQ를 사용하여 동기식 메시지 송수신을 구현하는 방법에 대해 알아보겠습니다.
ZeroMQ 설치
우선, ZeroMQ를 사용하기 위해서는 해당 라이브러리를 시스템에 설치해야 합니다. 다음은 Linux 환경에서의 설치 방법입니다.
sudo apt-get update
sudo apt-get install libzmq3-dev
ZeroMQ로 동기식 송수신 구현
ZeroMQ를 사용하여 동기식 메시지 송수신을 구현하기 위해서는 클라이언트와 서버 간의 통신 프로토콜을 정의해야 합니다. 보통 “REQ (요청)”과 “REP (응답)” 패턴이 사용됩니다.
클라이언트 (요청) 코드
#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 request_msg = "Hello, ZeroMQ!";
zmq::message_t request(request_msg.size());
memcpy(request.data(), request_msg.c_str(), request_msg.size());
socket.send(request);
zmq::message_t reply;
socket.recv(&reply);
std::string reply_msg(static_cast<char*>(reply.data()), reply.size());
std::cout << "Received reply: " << reply_msg << std::endl;
return 0;
}
서버 (응답) 코드
#include <zmq.hpp>
#include <string>
#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);
std::string request_msg(static_cast<char*>(request.data()), request.size());
std::cout << "Received request: " << request_msg << std::endl;
std::string reply_msg = "Hello, Client!";
zmq::message_t reply(reply_msg.size());
memcpy(reply.data(), reply_msg.c_str(), reply_msg.size());
socket.send(reply);
}
return 0;
}
마무리
이제 위의 코드를 참고하여 클라이언트와 서버의 동기식 메시지 송수신을 구현할 수 있습니다. ZeroMQ는 간편한 인터페이스를 제공하며, 다양한 통신 패턴을 지원하여 다른 용도에도 활용할 수 있습니다.
더 많은 정보를 원하시거나 ZeroMQ에 대해 더 자세히 알아보고 싶으시면 공식 문서를 참고하시기 바랍니다.