개발자 Q&A

개발하다 막혔다면? 여기서 질문하세요! 초보부터 고수까지, 함께 고민하고 해결하는 공간입니다. 누구나 자유롭게 질문하고 답변을 남겨보세요!

2025.04.29 23:09

ZMQSendMulti 질문

목록
  • DDD전문가 5시간 전 2025.04.29 23:09 새글
  • 2
    1
제가 ZMQ를 사용하여 다중 메시지를 전송하는 방법에 대해 궁금한 점이 있습니다. ZMQ::sendmulti 함수를 사용하여 다중 메시지를 전송할 때, 메시지를 전송하기 전에 여러 메시지를 저장하는 방법은 무엇이며, 메시지를 전송한 후 메시지가 잘 전송되었는지 확인하는 방법은 무엇입니까?

    댓글목록

    profile_image
    나우호스팅  5시간 전



    ZMQ::sendmulti 함수를 사용하여 다중 메시지를 전송하기 전에 메시지를 저장하는 방법은 다음과 같습니다.

    1. 메시지를 저장하는 큐를 생성합니다. 예를 들어, `std::queue` 클래스를 사용할 수 있습니다.
    2. 메시지를 큐에 추가합니다.
    3. 메시지를 전송하기 전에 큐에 저장된 메시지의 수를 확인합니다.
    4. 확인된 메시지 수만큼 ZMQ::sendmulti 함수를 호출하여 메시지를 전송합니다.

    메시지를 전송한 후 메시지가 잘 전송되었는지 확인하는 방법은 다음과 같습니다.

    1. ZMQ::sendmulti 함수를 호출한 후 ZMQ::getsockopt 함수를 사용하여 메시지 전송 결과를 확인합니다.
    2. 메시지 전송 결과를 확인하여 잘 전송되었는지 여부를 판단합니다.

    예를 들어, 다음 코드는 메시지를 저장하는 큐를 생성하고 메시지를 전송하는 방법을 보여줍니다.

    #hostingforum.kr
    cpp
    
    #include 
    
    #include 
    
    #include 
    
    
    
    int main() {
    
        // ZMQ Context 생성
    
        zmq::context_t context(1);
    
    
    
        // ZMQ Socket 생성
    
        zmq::socket_t socket(context, zmq::socket_type::rep);
    
    
    
        // 메시지를 저장하는 큐 생성
    
        std::queue messageQueue;
    
    
    
        // 메시지 추가
    
        messageQueue.push("메시지 1");
    
        messageQueue.push("메시지 2");
    
        messageQueue.push("메시지 3");
    
    
    
        // 메시지 전송
    
        int messageCount = messageQueue.size();
    
        zmq::message_t message;
    
        for (int i = 0; i < messageCount; i++) {
    
            messageQueue.front().copy(message.data(), messageQueue.front().size());
    
            socket.send(message, zmq::send_flags::sndmore);
    
            messageQueue.pop();
    
        }
    
    
    
        // 메시지 전송 결과 확인
    
        zmq::sockopt result;
    
        socket.getsockopt(zmq::sockopt::rcvmore, &result);
    
        if (result == 0) {
    
            std::cout << "메시지 전송 성공!" << std::endl;
    
        } else {
    
            std::cout << "메시지 전송 실패!" << std::endl;
    
        }
    
    
    
        return 0;
    
    }
    
    


    이 코드는 메시지를 저장하는 큐를 생성하고 메시지를 전송하는 방법을 보여줍니다. 메시지 전송 결과를 확인하기 위해 ZMQ::getsockopt 함수를 사용합니다.

    2025-04-29 23:10

  • 개발자 Q&A 포인트 정책
      글쓰기
      50P
      댓글
      10P
  • 전체 15,380건 / 1 페이지

검색

게시물 검색