zstr(3) ======= NAME ---- zstr - sending and receiving strings SYNOPSIS -------- ---- // Receive a string off a socket, caller must free it CZMQ_EXPORT char * zstr_recv (void *socket); // Receive a string off a socket if socket had input waiting CZMQ_EXPORT char * zstr_recv_nowait (void *socket); // Send a formatted string to a socket CZMQ_EXPORT int zstr_send (void *socket, const char *format, ...); // Send a formatted string to a socket, with MORE flag CZMQ_EXPORT int zstr_sendm (void *socket, const char *format, ...); // Send a series of strings (until NULL) as multipart data // Returns 0 if the strings could be sent OK, or -1 on error. CZMQ_EXPORT int zstr_sendx (void *socket, const char *string, ...); // Receive a series of strings (until NULL) from multipart data // Each string is allocated and filled with string data; if there // are not enough frames, unallocated strings are set to NULL. // Returns -1 if the message could not be read, else returns the // number of strings filled, zero or more. CZMQ_EXPORT int zstr_recvx (void *socket, char **string_p, ...); // Self test of this class CZMQ_EXPORT int zstr_test (bool verbose); ---- DESCRIPTION ----------- The zstr class provides utility functions for sending and receiving C strings across 0MQ sockets. It sends strings without a terminating null, and appends a null byte on received strings. This class is for simple message sending. EXAMPLE ------- .From zstr_test method ---- zctx_t *ctx = zctx_new (); assert (ctx); void *output = zsocket_new (ctx, ZMQ_PAIR); assert (output); zsocket_bind (output, "inproc://zstr.test"); void *input = zsocket_new (ctx, ZMQ_PAIR); assert (input); zsocket_connect (input, "inproc://zstr.test"); // Send ten strings, five strings with MORE flag and then END int string_nbr; for (string_nbr = 0; string_nbr < 10; string_nbr++) zstr_send (output, "this is string %d", string_nbr); zstr_sendx (output, "This", "is", "almost", "the", "very", "END", NULL); // Read and count until we receive END string_nbr = 0; for (string_nbr = 0;; string_nbr++) { char *string = zstr_recv (input); if (streq (string, "END")) { free (string); break; } free (string); } assert (string_nbr == 15); zctx_destroy (&ctx); ---- SEE ALSO -------- linkczmq:czmq[7]