
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