1、前言
zeromq提供了guide,http://zguide.zeromq.org/,可以帮助新手快速上手,提供了C\C++\PHP等多种语言。
2、测试程序
使用zeromq给的hwserver和hwclient的C语言测试程序。
hwserver代码如下:
1 #include <stdio.h> 2 #include <unistd.h> 3 #include <string.h> 4 #include <assert.h> 5 #include <zmq.h> 6 7 int main (void) 8 { 9 // Socket to talk to clients 10 void *context = zmq_ctx_new (); 11 void *responder = zmq_socket (context, ZMQ_REP); 12 int rc = zmq_bind (responder, "tcp://*:5555"); 13 assert (rc == 0); 14 15 while (1) { 16 char buffer [10]; 17 zmq_recv (responder, buffer, 10, 0); 18 printf ("Received Hello\n"); 19 sleep (1); // Do some 'work' 20 zmq_send (responder, "World", 5, 0); 21 } 22 return 0; 23 }
hwclient代码如下:
1 // Hello World client 2 #include <zmq.h> 3 #include <string.h> 4 #include <stdio.h> 5 #include <unistd.h> 6 7 int main (void) 8 { 9 printf ("Connecting to hello world server…\n"); 10 11 /*创建一个新的上下文*/ 12 void *context = zmq_ctx_new (); 13 void *requester = zmq_socket (context, ZMQ_REQ); 14 /*通过tcp协议,5555端口,连接本机服务端*/ 15 zmq_connect (requester, "tcp://localhost:5555"); 16 17 int request_nbr; 18 for (request_nbr = 0; request_nbr != 10; request_nbr++) { 19 char buffer [10]; 20 printf ("Sending Hello %d…\n", request_nbr); 21 zmq_send (requester, "Hello", 5, 0); 22 zmq_recv (requester, buffer, 10, 0); 23 printf ("Received World %d\n", request_nbr); 24 } 25 26 zmq_close (requester); 27 zmq_ctx_destroy (context); 28 29 return 0; 30 }
3、编译执行
我是将zeromq安装在/usr/local/zeromq目录下,Makefile中设置了include和lib的连接,编码正常通过,但是在执行时候提示:
[root@localhost hwserver]# ./hwserver
./hwserver: error while loading shared libraries: libzmq.so.5: cannot open shared object file: No such file or directory
网上查了一下,发现是没有将zeromq的lib路径添加到 ld.so.conf 。
参考:http://blog.csdn.net/guoyilongedu/article/details/17450815
将libzeromq.so的路径添加涛ld.so.conf中,操作步骤如下:
进入到 etc 下 cd /etc
编辑 ld.so.conf ,sudo vim ld.so.conf
加入 libzmq.so 的路径 /usr/local/zeromq/lib
保存之后 再执行命令ldconfig
执行完成后,编译成功:
启动hwserver和hwclient,执行结果如下所示: