2016-09-28 7 views
0

受信用にゼロコピーを使用すると、受信メッセージのサイズを問い合わせる方法はありますか?これによりゼロコピー受信とメッセージサイズ

私はゼロコピーを実現する(しよう):

zmq_recv(sock, buf, sizeof(buf), 0); 

私も試してみました:

zmq_msg_t msg; 
zmq_msg_init_data (&msg, buf, sizeof(buf), nullptr, NULL); 
zmq_msg_recv(&msg, sock, 0); 
size_t len = zmq_msg_size(&msg); 

をこれが正しいサイズを返しますが、bufを満たしていません。私ははzmq_msg_recvとの使用を意図しておらず、受信時にメッセージが再構築されると思います。ゼロコピーにguideを引用

答えて

3

受信にゼロコピーを行うための方法はありません:ZeroMQはあなたがいる限り、あなたが望むように記憶できるバッファを提供するが、それは書きません。データを直接アプリケーションバッファに格納します。

ゼロコピーは送信用であり、受信用ではありません。

Ohとzmq_recvは、受信したバイト数を返します。

+0

「zmq_recv」のグーグルでは、私はzmq 2.1のドキュメントにリダイレクトされ、これは非常に古いと見落とされました。 –

関連する問題