研究一个东西,我喜欢先略微了解一下,然后再跑个简单的Demo看看效果。
枯燥的文字描述难以引起我的兴趣。
就像一个美女,你描述她有多么多么的漂亮,什么沉鱼落雁,闭月羞花。我没看到还是没感觉,、
只有看到了,才能感受到。
最近准备研究下ZeroMQ,号称史上最好的消息通讯库。也不知是真是假,只有用过才知道了。
我跑了下 下面的Demo,只跑了客户端,汗…
//
// Hello World client in C++
// Connects REQ socket to tcp://localhost:5555
// Sends "Hello" to server, expects "World" back
//
#include <zmq.hpp>
#include <string>
#include <iostream>
int main ()
{
// Prepare our context and socket
zmq::context_t context (1);
zmq::socket_t socket (context, ZMQ_REQ);
std::cout << "Connecting to hello world server…" << std::endl;
socket.connect ("tcp://localhost:5555");
// Do 10 requests, waiting each time for a response
for (int request_nbr = 0; request_nbr != 10; request_nbr++) {
zmq::message_t request (5);
memcpy (request.data (), "Hello", 5);
std::cout << "Sending Hello " << request_nbr << "…" << std::endl;
socket.send (request);
// Get the reply.
zmq::message_t reply;
socket.recv (&reply);
std::cout << "Received World " << request_nbr << std::endl;
}
return 0;
}
准备工作:
1.下载 zmq,我下载了安装包,里面就有头文件和动态库文件;当然也可以下载源代码自己编译,
其实我也下载了源码编译成功了。但是编译过程实在是太麻烦了。(需要下载libsodium加密库,还要编译libsodium 库;可能需要修改平台工具集(v110等等);可能需要将version.h.in改为version.h;更奇葩的是version.h 获取版本号都有错,我只能把两个宏改为常量了;还有libsodium静态库和动态库需要考虑);
反正问题一大堆,我也是醉了。
还是下载安装包好,安装了,设置一下环境变量就可以用了。
下载地址:
http://zeromq.org/distro:microsoft-windows
我下载的是 x64 build for Vista, 7, 8, Windows Server 2008 R2 and newer. 那个链接。
2. 安装 这个简单,下一步下一步即可。
安装后把 C:\Program Files\ZeroMQ 4.0.4\Bin 添加到path,程序才能找到动态库。
3. 使用。
1)新建工程,控制台程序;
2) 把上面的代码复制到工程,覆盖main方法;
3)把 C:\Program Files\ZeroMQ 4.0.4\include 添加到 附加包含目录;
把C:\Program Files\ZeroMQ 4.0.4\lib 添加到 附加库目录;
4)在连接器-输入 加入 lib引入库文件 或者 直接在代码添加;
我是用的代码:
加一句:
#pragma comment(lib,"libzmq-v110-mt-4_0_4.lib")
即可。
4 最后编译运行即可,测试可行。
忘了有个注意事项,动态库是64位的,程序也必须是64位的;64位的应用程序不能直接调用32位的dll。