1) 够傻够简单。
2) 有源码,能看又能改。
最后相中了0mq,下面介绍如何安装和写个简单的例子。
一. linux平台:ubuntu&python。
安装
软件下载页面:
http://www.zeromq.org/intro:get-the-software
1. prerequisites安装:
sudo apt-get install libtool autoconf automake uuid-dev build-essential
2. 下载解压安装包:
wget http://download.zeromq.org/zeromq-2.1.11.tar.gz
tar -zxf zeromq-2.1.11.tar.gz
3. 编译安装:
./configure & make
sudo make install
4. 刷新库:
sudo ldconfig
5. 安装python开发环境:
sudo apt-get install python-dev python-setuptools
6. 安装python的0mq库:
简单安装:
sudo easy_install pyzmq (可能失败,鳖在这里就O了)
手动安装:
wget https://github.com/downloads/zeromq/pyzmq/pyzmq-2.1.11.zip
unzip pyzmq-2.1.11.zip
cd pyzmq-2.1.11
sudo python setup.py install --zmq=/usr/local
简单例子:hello world
#encoding=utf-8 # Hello World client in Python # Connects REQ socket to tcp://localhost:5555 # Sends "Hello" to server, expects "World" back # import zmq context = zmq.Context() #欢迎信息 print "正在连接hello world服务器" socket = context.socket(zmq.REQ) #socket 模式通讯 socket.connect ("tcp://localhost:5555") # 连接到本地的5555端口 #发出10次请求,每次等待服务器的一个响应 for request in range (1,10): print "客户端发送请求", request,"..." socket.send ("土鳖,你好吗?") #获取服务器响应 message = socket.recv() print "客户端收到回复", request, "[", message, "]"
#encoding=utf-8 # Hello World server in Python # Binds REP socket to tcp://*:5555 # Expects "Hello" from client, replies with "World" # import zmq import time context = zmq.Context() socket = context.socket(zmq.REP) #socket模式通讯 socket.bind("tcp://*:5555") #监听5555端口,等待请求 while True: #等待从客户端发送的请求 message = socket.recv() print "服务器收到请求: ", message #干点啥,鳖喜欢睡,所以睡会 time.sleep (1) #向客户端发送请求 socket.send("土鳖不好:(")
运行命令:
python hwserver.py & python hwclient.py
运行结果:
正在连接hello world服务器
客户端发送请求 1 ...
服务器收到请求: 土鳖,你好吗?
客户端收到回复 1 [ 土鳖不好:( ]
客户端发送请求 2 ...
服务器收到请求: 土鳖,你好吗?
客户端收到回复 2 [ 土鳖不好:( ]
客户端发送请求 3 ...
。。。
注意: 运行第二次必须关闭服务器:pkill python, 因为客户端跑完10个请求就自动退出了,服务器会一直运行。
相关资料:
pyzmq 例子:https://github.com/imatix/zguide/tree/master/examples/Python
pyzmq 文档: http://zeromq.github.com/pyzmq/
二. windows平台:windows7&C#。
1. 在页面http://www.zeromq.org/bindings:clr
下载clr版本的源代码。
下载链接:http://github.com/zeromq/clrzmq
2. 解压后打开src目录下面的clrzmq.sln,然后生成整个解决方案。
3. 新建一个C#控制台应用程序ZmqHello。
从src\packages\libzmq.3.1.1-beta1\Content\lib\x86目录下复制libzmq.dll和libzmq.dll.pdb到ZmqHello
项目的bin\Debug目录下。这个库是本机代码,clr通过interop与之通讯。如果你的系统是64位,复制x64目录下的文件。
4. 项目引用中添加.net版本的zmq库clrzmq.dll,所在目录是src\ZeroMQ\bin\Debug。
5. 编写hello world程序,下面是客户端和服务器代码:
class Program { static void Main(string[] args) { //构建服务器和客户端线程 var client = new Thread(ClientThread); var server = new Thread(ServerThread); //开始执行线程 server.Start(); client.Start(); //等待线程执行完毕 server.Join(); client.Join(); } private static void ClientThread() { Thread.Sleep(10); using (var context = ZmqContext.Create()) using (var socket = context.CreateSocket(SocketType.REQ)) { //连接服务器 socket.Connect("tcp://localhost:8989"); //发送消息 string msg = "土鳖,你好吗"; socket.SendFrame(new Frame(Encoding.UTF8.GetBytes(msg))); Console.WriteLine("客户端发送请求:" + msg); var buffer = new byte[100]; int size = socket.Receive(buffer); string recvMsg = Encoding.UTF8.GetString(buffer, 0, size); Console.WriteLine("客户端收到回复:" + recvMsg); } } private static void ServerThread() { //创建上下文和socket using (var context = ZmqContext.Create()) using (var socket = context.CreateSocket(SocketType.REP)) { //服务器监听8989端口 socket.Bind("tcp://*:8989"); //接收客户端请求 Frame request = socket.ReceiveFrame(); string msg = Encoding.UTF8.GetString(request); Console.WriteLine("服务端收到请求:" + msg); string sendMsg = "土鳖不好:("; socket.SendFrame(new Frame(Encoding.UTF8.GetBytes(sendMsg))); Console.WriteLine("服务端发送回复:" + sendMsg); } } }
6. 运行后,结果如下:
codeplex上面还有个更强大的库:http://zeromq.codeplex.com/
有兴趣的同学可以研究一下。
更复杂的例子在clrmq解决方案(刚才下载解压后打开的那个)的Tests目录下。
文档没找到专门针对C#的,只有一个通用的:
http://zguide.zeromq.org/page:all
手册也没找到专门的,下面是c的,凑活着看吧:
http://api.zeromq.org/
下载说明
☉本站所有源码和资源均由站长亲自测试-绝对保证都可以架设,运营!
☉如源码和资源有损坏或所有链接均不能下载,请告知管理员,
☉本站软件和源码大部分为站长独资,资源购买和收集,放心下载!
☉唯一站长QQ:1004003180 [人格担保-本站注重诚信!]
☉购买建议E-mail:1004003180@qq.com 源码收购 E-mail:1004003180@qq.com
☉本站文件解压密码 【文章内都自带解压密码,每个密码不同!】