Queue device
这是一个位于客户端可服务端的中间件,拓展了之前的REQ/REP模式,图
通过这种方式,REQ socket和REP socket之间不需要明确绑定了,大家都绑定到Queue这个device就可以了,Queue device来处理请求的发送与返回,灵活度大大提升(不这样估计没人用),看看代码 Queue-device:
#coding=utf-8 import zmq def main(): try: context = zmq.Context(1)#IO线程数 # 面向客户端 frontend = context.socket(zmq.XREP) frontend.bind("tcp://*:5559") # 面向服务端 backend = context.socket(zmq.XREQ) backend.bind("tcp://*:5560") zmq.device(zmq.QUEUE, frontend, backend) except Exception, e: print e print "bringing down zmq device" finally: pass frontend.close() backend.close() context.term()#手动结束context if __name__ == "__main__": main()
好心的告诉你,zmq.device()里有个while True:,所以别担心它自己结束,作者挺细心的:)
Queue-server:这个就是普通的REP
import zmq import time import sys import random port = "5560" context = zmq.Context() socket = context.socket(zmq.REP) socket.connect("tcp://localhost:%s" % port) server_id = random.randrange(1,10005) while True: # Wait for next request from client message = socket.recv() print "Received request: ", message time.sleep (1) socket.send("World from server %s" % server_id)
Queue-client:普通的REQ
import zmq import sys import random port = "5559" context = zmq.Context() print "Connecting to server..." socket = context.socket(zmq.REQ) socket.connect ("tcp://localhost:%s" % port) client_id = random.randrange(1,10005) # Do 10 requests, waiting each time for a response for request in range (1,10): print "Sending request ", request,"..." socket.send ("Hello from %s" % client_id) # Get the reply. message = socket.recv() print "Received reply ", request, "[", message, "]"
run的顺序是Queue device先起来,然后server,client,一切如同之前的REQ/REP模式。
对应的还有2个device,大同小异,复制下图
PUB/SUB家的:
PUSH/PULL家的:
ok,接下来的似乎要深入点,总的来说感觉这个学习曲线还是很平滑的:)
相关推荐
Devicenet学习笔记
"最新 wd ses device usb device" 是一款针对西部数据(WD)特定硬件设备的USB驱动程序,主要用于连接和管理WD SES Device(Serial Attached SCSI Enclosure Services Device),这通常指的是西部数据的外置硬盘或...
wd ses device usb device 西部数据 移动硬盘 驱动 wd ses device usb device 西部数据 移动硬盘 驱动 wd ses device usb device 西部数据 移动硬盘 驱动
DeviceNet从站设备开发的源码,采用了microchip的MCU,对于做DeviceNet从站设备的开发人员来说,有很大参考意义
DeviceNet 协议规范完整中文版 DeviceNet 协议是一种基于 CAN(Controller Area Network,控制器局域网)总线的工业通信协议,主要应用于工业自动化领域。该协议规范完整中文版.pdf 文件详细介绍了 DeviceNet 协议...
DeviceNet协议是一种基于控制器局域网络(CAN,Controller Area Network)的工业通信协议,它在自动化领域广泛应用。这个协议主要用于连接设备,如传感器、执行器和其他控制器,形成一个分布式控制系统。DeviceNet...
在iOS开发中,Device ID(设备标识符)是用于唯一标识一台特定iOS设备的一个字符串。它对于开发者来说非常重要,因为可以基于此标识符进行设备跟踪、数据分析和个性化服务。然而,Apple为了保护用户隐私,随着时间的...
DeviceNet是基于CAN(Controller Area Network)总线技术的一种工业网络通信协议,主要用于连接工业设备,如传感器、执行器、操作面板和控制设备等。DeviceNet协议规范为设备制造商和用户提供了一个统一标准,以确保...
在iOS开发领域,DeviceSupport文件夹是至关重要的,特别是对于开发者和越狱用户而言。标题“ios 11.3 DeviceSupport”所提及的是苹果公司iOS操作系统11.3版本的一个特定组件,它包含了用于模拟或支持特定硬件设备...
基于STM32开发的DEVICENET的不完全原代码,由于版权有限,里边有几处需要修改后才能完全符合标准。
一、准备工作 配置DeviceAdmin 配置DeviceAdmin可参考 android权限级别探索(二),设备管理器开启和使用及常见api,创建DeviceReceiver继承DeviceAdminReceiver,并在AndroidManifest中注册,完成两步即可。无需将...
设备树(Device Tree)在嵌入式Linux系统中扮演着至关重要的角色,它是一种数据结构,用于描述硬件配置,使得操作系统内核能够更好地理解和管理硬件资源。`device-tree-xlnx-master_tree_devicetree2018.3_`这个标题...
DeviceNet是一种基于CAN(Controller Area Network)总线的工业网络协议,主要应用于自动化领域,它为设备间的通信提供了一种标准化的方式。这个标题提到的"DeviceNet 仅限组2协议栈源码"指的是适用于PIC18微控制器...
《功能测试工具源码DeviceTest深度解析》 在软件开发领域,功能测试是验证软件是否按照预期功能执行的重要环节。为了提升测试效率和准确性,功能测试工具应运而生。本文将围绕“DeviceTest”这一功能测试工具的源码...
《NI VeriStand UDP通信Custom Device详解》 在自动化测试和控制领域,National Instruments(NI)的VeriStand是一款广泛使用的实时测试系统软件。它提供了一个灵活的平台,用于快速构建和部署各种测试系统,包括...
确保Android SDK、JDK以及Gradle版本正确,并配置好Android Virtual Device (AVD)或连接真机设备用于调试。 2. **UI设计** 使用Android Studio内置的布局编辑器(XML)设计笔记APP的用户界面,通常包括主界面、...
在iOS开发过程中,开发者通常需要在Xcode中使用DeviceSupport文件来支持不同版本的iOS系统。这些文件包含了运行特定iOS版本设备的模拟器所需的信息。 标题“iOS11.4 DeviceSupport”指的是iOS 11.4版本的Device...
本话题聚焦于"allegro 自动批量生成device文件脚本",这是一个针对Allegro用户的高效工具,旨在简化设备(device)文件的创建过程。设备文件在Allegro中扮演着重要角色,它们包含了元器件的形状、属性和连接信息,是...
《基于ADμC812单片机的DeviceNet协议从站程序详解》 在工业自动化领域,DeviceNet协议作为一种广泛应用的现场总线标准,它以其高效、可靠和灵活的特点,成为了众多设备间的通信首选。而ADμC812单片机则是微控制器...
**西部数据WD SES Device Driver详解** 西部数据(WD)的SES Device Driver是一款专门针对WD品牌的移动硬盘设备设计的驱动程序。这款驱动的核心功能是确保计算机能够正确识别并有效管理WD SES(Self-Encrypted ...