zeromq学习笔记2——简单的客户端和服务端测试程序
2024-09-08 06:19:42
1、前言
zeromq提供了guide,http://zguide.zeromq.org/,可以帮助新手快速上手,提供了C\C++\PHP等多种语言。
2、测试程序
使用zeromq给的hwserver和hwclient的C语言测试程序。
hwserver代码如下:
#include <stdio.h>
#include <unistd.h>
#include <string.h>
#include <assert.h>
#include <zmq.h> int main (void)
{
// Socket to talk to clients
void *context = zmq_ctx_new ();
void *responder = zmq_socket (context, ZMQ_REP);
int rc = zmq_bind (responder, "tcp://*:5555");
assert (rc == ); while () {
char buffer [];
zmq_recv (responder, buffer, , );
printf ("Received Hello\n");
sleep (); // Do some 'work'
zmq_send (responder, "World", , );
}
return ;
}
hwclient代码如下:
// Hello World client
#include <zmq.h>
#include <string.h>
#include <stdio.h>
#include <unistd.h> int main (void)
{
printf ("Connecting to hello world server…\n"); /*创建一个新的上下文*/
void *context = zmq_ctx_new ();
void *requester = zmq_socket (context, ZMQ_REQ);
/*通过tcp协议,5555端口,连接本机服务端*/
zmq_connect (requester, "tcp://localhost:5555"); int request_nbr;
for (request_nbr = ; request_nbr != ; request_nbr++) {
char buffer [];
printf ("Sending Hello %d…\n", request_nbr);
zmq_send (requester, "Hello", , );
zmq_recv (requester, buffer, , );
printf ("Received World %d\n", request_nbr);
} zmq_close (requester);
zmq_ctx_destroy (context); return ;
}
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,执行结果如下所示:
最新文章
- PHP运算符
- Java反射遍历数组
- windows系统查看80端口被占用的程序并结束该程序运行
- SAP debug的几种方式
- 运行javascript的方式
- $(document).ready()与 window.onload执行时机
- linux 进程间信号量管理程序之sem_timedwait使用
- sql server 深入使用 总结 part1
- Eclipse 在线安装fat jar插件
- Android---Parcelable包装类的作用
- JVM-垃圾收集的过程
- 通过maven profile 打包指定环境配置
- 让CPU占用率曲线听你指挥
- Problem: Time(一道水却有意思的题
- C++ Primer 笔记——关联容器
- GNU make使用(二)
- Python基础(一)_数据类型、条件判断、循环、列表
- JVM垃圾回收机制之引用类型
- 本地绑定域名及host做快速解析与域名屏蔽处理
- 四种方式实现波浪效果(CSS效果)
热门文章
- C++ code:浮点数的比较(Floating-Pointing Number Comparison)
- python3笔记(二)Python语言基础
- ASP.NET Global.asax详解【转】
- 2017-2018-2 20155309 南皓芯 Exp7 网络欺诈防范
- spring-boot集成spring-data-jpa
- Spring的控制反转和依赖注入
- day8--socketserver回顾
- BZOJ2243 洛谷2486 [SDOI2011]染色 树链剖分
- What Are You Talking About HDU1075
- Scrapy爬虫笔记 - 爬取知乎