#include #include #include #include #define S(x) #x #define S_(x) S(x) #define LINE S_(__LINE__) #define req(x) do { if (!(x)) { perror(__FILE__ ":" LINE ": " #x); abort(); } } while (0) int main() { void *context = zmq_ctx_new(); req(context); void *client = zmq_socket(context, ZMQ_REQ); req(client); req(0 == zmq_connect(client, "tcp://127.0.0.1:5555")); zmq_msg_t request; req(0 == zmq_msg_init_size(&request, 2)); memcpy(zmq_msg_data(&request), "hi", 2); req(0 <= zmq_msg_send(&request, client, 0)); req(0 == zmq_msg_close(&request)); zmq_msg_t reply; zmq_msg_init(&reply); req(0 <= zmq_msg_recv(&reply, client, 0)); write(1, zmq_msg_data(&reply), zmq_msg_size(&reply)); write(1, "\n", 1); req(0 == zmq_msg_close(&reply)); req(0 == zmq_close(client)); req(0 == zmq_ctx_destroy(context)); return 0; }