zeromq学习笔记2——简单的客户端和服务端测试程序

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的连接,编码正常通过,但是在执行时候提示:

[[email protected] 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,执行结果如下所示:

时间: 2024-10-10 05:19:54

zeromq学习笔记2——简单的客户端和服务端测试程序的相关文章

python---》客户端与服务端的基础(做一个简单的客户端与服务端)

今天我们分享的内容是python简单的客户端与服务端,此处仅介绍一些简单的函数,并作出来一个玩儿玩儿. 在开始之前呢,先用一张图表示他们之间的关系 我们来按照这个步伐依次介绍: 服务端: import socketserver=socket.socket()#此处是为了创建出来一个服务端,第一步server.bind(('localhost',9999))#将套接字绑定到地址,loclhost是当地地址的的意思,如果要想查看当地地址的话,打开控制台(运行-->cmd) 按ipconfig即可查到

使用socket实现简单的客户端和服务端通信(C#语言)

1.主要思路: (1) 服务端开启监听线程,等待客户端的连接. 每个socket连接放到独立线程中处理. (2) 服务端和客户端使用约定的消息格式通信.对于比较复杂的消息(如向服务端传递一个实例),可以使用json封装传输. (3) 每个连接的客户端,注册唯一的ClientID,在服务端以此来区分消息的来源. 2.代码构成 实现该样例包含两个cs的客户端程序. 分别为 服务端 和 客户端. 3.主要代码: (1) 服务端 xaml <Window x:Class="WpfApplicati

android菜鸟学习笔记25----与服务器端交互(二)解析服务端返回的json数据及使用一个开源组件请求服务端数据

补充:关于PHP服务端可能出现的问题: 如果你刚好也像我一样,用php实现的服务端程序,采用的是apache服务器,那么虚拟主机的配置可能会影响到android应用的调试!! 在android应用中访问的IP都是10.0.2.2,如果在apache虚拟主机配置文件中配置了多个虚拟主机,那么将默认解析为对第一个虚拟主机的请求,所以,在调试android应用时,应该将对应的服务端所配置的那个虚拟主机放在配置文件中的第一个虚拟主机的位置.否则就会出现请求的文件不存在等的错误. 服务端返回JSON数据及

带线程池的socket客户端与服务端

前言 socket(套接字),Socket和ServerSocket位于java.net包中,之前虽然对socket有过一些了解,但一直都是云里雾里的,特意仔细的学习了一个socket,用socket模拟一个天气查询的功能,并且解决了几个使用socket过程中比较严重的问题. 最简单的客户端和服务端 服务端代码 1 package cn.hucc.socket.server; 2 3 import java.io.DataInputStream; 4 import java.io.DataOut

Sharepoint2013商务智能学习笔记之简单概述(一)

SharePoint 2013 中的商业智能 (BI) 提供集 Microsoft Office 应用程序和其他 Microsoft 技术于一体的全面的 BI 工具.这些 BI 工具有:Excel 2013.SharePoint 2013 中的 Excel Services.SharePoint Server 2013 中的 PerformancePoint Services.SharePoint 中的 Visio Services.SharePoint 2013 和 Microsoft SQL

node.js在windows下的学习笔记(2)---简单熟悉一些命令

1.打开如下的安装 2.输入node -v,显示node的版本号 3.输入node --help.显示帮助命令 4.自己用一个文本编辑器编写一下代码,保存为text.js,然后在控制台输入node.exe  text.js的路径(直接把这个js文件拖到控制台自动显示路径),按下回车键 var http = require("http"); http.createServer(function(request, response) { response.writeHead(200, {&

加壳学习笔记(三)-简单的脱壳思路&amp;调试思路

首先一些windows的常用API: GetWindowTextA:以ASCII的形式的输入框 GetWindowTextW:以Unicaode宽字符的输入框 GetDlgItemTextA:以ASCII的形式的输入框 GetDlgItemTextW:以Unicaode宽字符的输入框 这些函数在使用的时候会有些参数提前入栈,如这函数要求的参数是字符串数目.还有大小写啦之类的东西,这些东西是要在调用该函数之前入栈,也就是依次push,就是说一般前面几个push接着一个call,那前面的push可能

Node.js学习笔记(3) - 简单的curd

这个算是不算完结的完结吧,前段时间也是看了好久的Node相关的东西,总想着去整理一下,可是当时也没有时间: 现在看来在整理的话,就有些混乱,自己也懒了,就没在整理,只是简单的记录一下 一.demo的简单介绍 这次demo,只涉及到简单的curd操作,用到的数据库是mongo,所以要安装mongo数据库,数据库连接驱动是mongoose: 当然关于mongo的驱动有很多,比如mongous mongoskin等:(详见http://cnodejs.org/topic/4f4ca8e0940ce2e

SuperSocket框架学习笔记3-构建Unity3D__WebSocket4Net客户端程序

确保上一节服务器程序运行没有问题,否则请仔细看上一节 新建一个Unity3D项目(我的Unity3D版本是4.2.0) 1,在Unity3D内新建一个文件夹命名 Plugin 将下载的 客户端: WebSocket4Net  客户端必备 http://websocket4net.codeplex.com/ WebSocket4Net.dll   这个DLL复制到 Unity3D里面刚才新建的 Plugin文件夹内(注意Unity不得使用中文) ----------- 查看Unity下面的状态面板