How to implement ZeroMQ Request/Reply in C?

Server

The server should handle incoming JSON-RPC requests on port 5000.

Install the czmq library.

Write a server script, server.c:

#include <czmq.h>

int main(void) {
    // Connect
    zsock_t *responder = zsock_new_rep("tcp://*:5000");
    // Recv
    char *string = zstr_recv(responder);
    puts(string);
    zstr_free(&string);
    // Send
    zstr_send(responder, "Pong");
    // Disconnect
    zsock_destroy(&responder);
    return 0;
}

Build and start the server:

$ gcc -lczmq server.c -o server
$ ./server

Client

Write client script:

#include <czmq.h>

int main(void) {
    // Connect
    zsock_t *requester = zsock_new_req("tcp://127.0.0.1:5000");
    // Send
    zstr_send(requester, "Ping");
    // Recv
    char *string = zstr_recv(requester);
    puts(string);
    zstr_free(&string);
    // Disconnect
    zsock_destroy(&requester);
    return 0;
}

Build and run:

$ gcc -lczmq client.c -o client
$ ./client
Pong