python下zeromq的router-router模式带monitor监视连接状态

python下zeromq的router-router模式带monitor监视连接状态

服务端

import zmq  
from zmq.utils.monitor import recv_monitor_message, parse_monitor_message  
import threading  
import time  
from zmq.eventloop import zmqstream  
from tornado import ioloop  
  
def serv(socket):  
    i = 0  
 while 1:  
        time.sleep(0.5)  
        name = input('name >>>').encode()  
        data = input('data >>>').encode()  
        socket.send_multipart([name, data, str(i).encode()])  
        print('Sent one massage to %s.' , name)  
  
def event_m(msg):  
    EVENT_MAP = {}  
    for name in dir(zmq):  
  
        if name.startswith('EVENT_'):  
            value = getattr(zmq, name)  
  
            EVENT_MAP[value] = name  
    parsed_msg = parse_monitor_message(msg)  
    print("mointoring: ", EVENT_MAP[parsed_msg['event']], parsed_msg)  
  
def getcommand(msg):  
    print('The server has connected with a client.')  
    print(msg)  
  
  
if __name__ == "__main__":  
    ctx = zmq.Context()  
    socket = ctx.socket(zmq.ROUTER)  
    socket.setsockopt_string(zmq.IDENTITY, 'router1')  
    socket.bind("tcp://127.0.0.1:6667")  # 只能有一个使用bind, 其他使用connect  
 socket.monitor("inproc://monitor.dealer", zmq.EVENT_ALL)  
    print('Waiting for the connection from clients...')  
  
    socket_monitor = ctx.socket(zmq.PAIR)  
    socket_monitor.connect("inproc://monitor.dealer")  
  
    stream = zmqstream.ZMQStream(socket)  
    stream.on_recv(getcommand)  
  
    stream_monitor = zmqstream.ZMQStream(socket_monitor)  
    stream_monitor.on_recv(event_m)  
  
    ioloop.IOLoop.instance().start()

客户端

客户端与服务器差别不大,只是修改了名称和绑定方式

socket.setsockopt_string(zmq.IDENTITY, 'router2')
socket.connect("tcp://127.0.0.1:6667") # 只能有一个使用bind, 其他使用connect  

使用

服务器中输入信息传输到的客户端router2和信息

name >>>router2
data >>>123

客户端接收到

[b'router1', b'123', b'0']
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值