Hello ZeroMQ World !
安装
git clone --depth=1 https://github.com/imatix/zguide.git
./configure
make
make install
C Project 添加库
gcc -L/usr/local/lib -o "veto_mq_server" ./src/veto_mq_server.o -lzmq
可能的异常:库路径、名称错误
Undefined symbols for architecture x86_64:
"_zmq_bind", referenced from:
_main in veto_mq_server.o
"_zmq_ctx_new", referenced from:
_main in veto_mq_server.o
"_zmq_recv", referenced from:
_main in veto_mq_server.o
"_zmq_send", referenced from:
_main in veto_mq_server.o
"_zmq_socket", referenced from:
_main in veto_mq_server.o
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
Hello World Demo
1/* 2 ============================================================================ 3 Name : veto_mq_server.c 4 Author : yanrui 5 Version : 6 Copyright : 2015-2050 7 Description : Hello World in C, Ansi-style 8 ============================================================================ 9 */ 10 11 12#include <stdio.h> 13#include <unistd.h> 14#include <string.h> 15#include <assert.h> 16//########################### 17#include <zmq.h> 18#include <zmq_utils.h> 19//########################### 20 21#include "veto_mq_utils.h" 22 23int main (void) 24{ 25 // 26 print_zmq_version(); 27 // Socket to talk to clients 28 void *context = zmq_ctx_new (); 29 void *responder = zmq_socket (context, ZMQ_REP); 30 int rc = zmq_bind (responder, "tcp://*:5555"); 31 assert (rc == 0); 32 33 while (1) { 34 char buffer [10]; 35 zmq_recv (responder, buffer, 10, 0); 36 37 printf ("Received Hello \n"); 38 sleep (1); // Do some 'work' 39 zmq_send (responder, "World", 5, 0); 40 } 41 return 0; 42} 43 44/* 45 ============================================================================ 46 Name : veto_mq_client.c 47 Author : yanrui 48 Version : 49 Copyright : 2015-2050 50 Description : Hello World in C, Ansi-style 51 ============================================================================ 52 */ 53 54 55#include <string.h> 56#include <stdio.h> 57#include <unistd.h> 58 59#include <zmq.h> 60#include <zmq_utils.h> 61 62int main(void) { 63 64 printf ("Connecting to hello world server...\n"); 65 void *context = zmq_ctx_new (); 66 void *requester = zmq_socket (context, ZMQ_REQ); 67 zmq_connect (requester, "tcp://localhost:5555"); 68 69 int request_nbr; 70 for (request_nbr = 0; request_nbr != 10; request_nbr++) { 71 char buffer [10]; 72 printf ("Sending Hello %d...\n", request_nbr); 73 zmq_send (requester, "Hello", 5, 0); 74 zmq_recv (requester, buffer, 10, 0); 75 printf ("Received World %d\n", request_nbr); 76 } 77 zmq_close (requester); 78 zmq_ctx_destroy (context); 79 80 return 0; 81}