
	                	                 
ZMQSocket::recv 함수의 첫 번째 파라미터로 받을 메시지의 크기를 지정해야 하는 것은 사실입니다. 하지만 메시지의 크기가 정해져 있지 않다면, recv 함수를 사용하는 방법은 두 가지가 있습니다.
1. 메시지의 크기를 동적으로 계산하는 방법: 메시지의 크기를 알 수 없을 때, recv 함수의 첫 번째 파라미터로 -1을 지정하여 메시지의 크기를 동적으로 계산할 수 있습니다. 이 경우, recv 함수는 메시지의 크기를 반환합니다. 예를 들어, 다음과 같이 사용할 수 있습니다.
#hostingforum.kr
cpp
int msg_size = ZMQSocket::recv(sock, -1);
if (msg_size > 0) {
    char* msg = new char[msg_size];
    ZMQSocket::recv(sock, msg, msg_size);
    // 메시지를 처리하는 코드
    delete[] msg;
}
2. 메시지의 크기를 미리 알 수 없을 때 recv 함수를 사용하는 방법: 메시지의 크기를 미리 알 수 없을 때, recv 함수를 사용하는 방법은 다음과 같습니다. recv 함수를 사용하여 메시지를 받을 때, 메시지의 크기를 동적으로 계산하여 메시지를 받을 수 있습니다. 예를 들어, 다음과 같이 사용할 수 있습니다.
#hostingforum.kr
cpp
int msg_size = 1024; // 초기 메시지 크기
char* msg = new char[msg_size];
while (true) {
    int recv_size = ZMQSocket::recv(sock, msg, msg_size);
    if (recv_size > 0) {
        // 메시지를 처리하는 코드
    } else if (recv_size == 0) {
        break; // 메시지 전송이 종료되었습니다.
    } else {
        delete[] msg;
        throw std::runtime_error("메시지 전송 오류");
    }
    msg_size = recv_size; // 메시지 크기를 업데이트
}
delete[] msg;
이러한 방법을 사용하여 메시지의 크기가 정해져 있지 않더라도 recv 함수를 사용할 수 있습니다.
2025-08-07 21:44