Dans le ZMQ_REQ
/ZMQ_REP
example un tampon est initialisé, puis le message est copié à l'aide de memcpy
.Comment envoyer un message ZMQ en utilisant une référence?
Plus précisément:
zmq::message_t reply (5);
memcpy (reply.data(), "World", 5);
socket.send (reply);
Comment répondre au message en utilisant une référence de pointeur char?
C'est quelque chose le long des lignes de:
char* text = "Hello";
zmq::message_t reply();
socket.send (text);
Une chaîne constante (comme ' « World »' dans le premier exemple) est un tableau de caractères constants. Et comme tous les tableaux, il se désintègre en un * pointeur vers son premier élément *. Ce que vous avez dans votre deuxième exemple avec 'text', est un * pointeur vers le premier élément * du tableau contenant' 'Hello ''. Le point que j'essaie de faire est que les deux exemples sont exactement les mêmes, et vous faites exactement la même chose dans le second exemple avec 'memcpy', mais en passant la variable' text' comme second argument (et de préférence 'strlen' pour obtenir la longueur de la chaîne). –
Egalement quelques mots sur la terminologie: Ce que vous avez avec 'text' n'est * pas * une référence. C'est un pointeur. Nulle part les références sont impliquées. –
Enfin plus de nitpicking: '" Hello "' est un tableau de caractères * constant *. Cela signifie que vous devriez utiliser par ex. 'char const *' (ou le plus commun mais équivalent 'const char *') pour le type de 'text'. –