2016-09-28 4 views
0

Gibt es eine Möglichkeit, die Größe der empfangenen Nachricht abzufragen, wenn für den Empfang eine Nullkopie verwendet wird?Nullkopie-Empfang und Nachrichtengröße

Mit diesem I (versuchen zu) erreichen Null-Kopie:

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

ich auch versucht:

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); 

Diese richtige Größe zurückgibt, aber buf nicht füllen. Ich denke zmq_msg_init_data ist nicht für die Verwendung mit zmq_msg_recv vorgesehen und die Nachricht wird beim Empfangen neu erstellt.

Antwort

3

Zitiert die guide auf Null-Kopie:

Es gibt keine Möglichkeit, Null-Kopie zu tun auf erhalten: ZeroMQ liefert Ihnen einen Puffer, der Sie so lange speichern, wie Sie wollen, aber es wird nicht schreiben Daten direkt in Anwendungspuffer.

Nullkopie ist nur zum Senden, nicht zum Empfangen.

Oh und zmq_recvgibt die Anzahl der empfangenen Bytes zurück.

+0

Beim googeln von 'zmq_recv' wurde ich auf zmq 2.1 umgeleitet und übersehen, dass dies sehr alt ist. –

Verwandte Themen