通常需要用到ZeroMQ的人应该已经具备比较深的编程知识,所以有个问题就是目前能找到的大多数入门教程对小白不够友好。
所以我最近在学的时候,顺便做些记录。
就不摆概念定义了,百度一下就有。而且刚刚学可能也看不懂,容易打击信心,所以直接从例子开始吧。
接下来会用三个例子,介绍最基本的模式和用法。
第一个例子
我们想实现Hello World这个经典功能。但是ZeroMQ不是一个编程语言,是一个传输工具。所以我们想实现的功能是:A给B发送一个消息,B收到消息返回给A一些回答。也就是客户端和服务器干的事情。
客户端发送“Hello”到服务器,然后服务器用“World”来应答。
下面是Hello world服务器(hwserver.py):
# -*-coding:utf-8-*-
import time
import zmq
context = zmq.Context()
socket = context.socket(zmq.REP)
socket.bind("tcp://*:5555")
while True:
# Wait for next request from client
message = socket.recv()
print("Received request: %s" % message)
# Do some 'work'
time.sleep(0.5)
# Send reply back to client
socket.send(b"World")
把REP套接字绑定到tcp://*:5555上,就像是安装一个电话机在这里,这样别人就可以给它打电话传输信息了。
while True让服务器会一直运行,等待客户端的消息,接收到之后,发送消息“World”。
字符串前面b代表这是一个bytes对象,下同。
下面是客户端(hwclient.py):
# -*-coding:utf-8-*-
import zmq
context = zmq.Context()
# Socket to talk to server
print("Connecting to hello world server...")
socket = context.socket(zmq.REQ)
socket.connect("tcp://localhost:5555")
# Do 10 requests, waiting each time for a response
for request in range(10):
print("Sending request %s ..." % request)
socket.send(b"Hello")
# Get the reply.
message = socket.recv()
print("Received reply %s [ %s ]" % (request, message))
客户端取连接服务器的位置,相当于给之前安装的电话机打电话。
然后测试,发送了10次消息,每次都是发送的“Hello”。
然后接受服务器返回的信息,打印出来。
首先打开服务器,即运行hwserver.py :
服务器正在等待。
然后运行客户端,即hwclient.py :