
ZMQSocket::sendmulti를 사용하여 다중 메시지를 보내는 경우, 메시지 수신 여부를 확인하기 위해서는 ZMQ::REQUIRE_RELAXED_ZERO_COPY 옵션을 사용하여 ZMQ::DONTWAIT 옵션을 설정한 후 sendmulti를 사용해야 합니다.
#hostingforum.kr
cpp
zmq::context_t context(1);
zmq::socket_t socket(context, zmq::socket_type::dealer);
socket.set_option(zmq::sockopt::require_relaxed_zero_copy(true));
socket.sendmulti("메시지1", zmq::send_flags::dontwait);
socket.sendmulti("메시지2", zmq::send_flags::dontwait);
이러한 옵션을 설정한 후 sendmulti를 사용하면 메시지 수신 여부를 확인할 수 있습니다.
메시지 수신 여부를 확인하기 위해서는 zmq::socket_t의 getsockopt 메서드를 사용하여 zmq::sockopt::rcvtimeo 옵션을 설정한 후 recv 메서드를 사용하여 메시지를 받을 수 있습니다.
#hostingforum.kr
cpp
zmq::sockopt::rcvtimeo_t rcvtimeo;
socket.getsockopt(zmq::sockopt::rcvtimeo, rcvtimeo);
if (rcvtimeo > 0) {
zmq::message_t message;
socket.recv(&message, zmq::recv_flags::dontwait);
if (message.size() > 0) {
// 메시지가 수신되었습니다.
} else {
// 메시지가 수신되지 않았습니다.
}
}
이러한 방법을 사용하면 ZMQSocket::sendmulti를 사용하여 다중 메시지를 보내는 경우, 메시지 수신 여부를 확인할 수 있습니다.
2025-07-22 04:29