ZeroMQ的python版本和C/C++版本的接口差不多,要实现一个server对N个client,异步方式,而且可以对指定的client发送消息,可以这样:
server采用ROUTER方式,client采用DEALER方式,而且要自己制定client的zmq.IDENTITY(如果不指定,zmq就会自动生成一个,不好控制对制定的client发送消息。)
server.py
#!/usr/bin/python
#-*-coding:utf-8-*-
import time
import zmq
#import zhelpers
context = zmq.Context()
socket = context.socket(zmq.ROUTER)
#server不需要指定
#socket.setsockopt_string(zmq.IDENTITY, u"desktop")
socket.bind("tcp://*:5555")
while True:
#zhelpers.dump(socket) #这里可以打印出帧的具体内容
[address,contents]=socket.recv_multipart()
print("[%s]%s\n"%(address,contents))
reply = "[get server reply:" + contents + "]"
socket.send_multipart([address, reply]) #这里的address就可以指定客户端发消息
#!/usr/bin/python
#-*-coding:utf-8-*-
import zmq
import sys
import os
import threading
import ctypes
import inspect
class ZmqClientThread(threading.Thread):
def __init__(self, func, serverIp, port, identity):
threading.Thread.__init__(self