`
pjwqq
  • 浏览: 81458 次
社区版块
存档分类
最新评论

pyzmq的Device笔记

阅读更多

    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,接下来的似乎要深入点,总的来说感觉这个学习曲线还是很平滑的:)

 

 

 

 

 

 

4
2
分享到:
评论

相关推荐

    Devicenet学习笔记

    Devicenet学习笔记

    最新 wd ses device usb device

    "最新 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 西部数据 移动硬盘 驱动 wd ses device usb device 西部数据 移动硬盘 驱动

    device.zip_devicenet_devicenet源码_microchip devicenet

    DeviceNet从站设备开发的源码,采用了microchip的MCU,对于做DeviceNet从站设备的开发人员来说,有很大参考意义

    DeviceNet-协议规范完整中文版 .pdf

    DeviceNet 协议规范完整中文版 DeviceNet 协议是一种基于 CAN(Controller Area Network,控制器局域网)总线的工业通信协议,主要应用于工业自动化领域。该协议规范完整中文版.pdf 文件详细介绍了 DeviceNet 协议...

    xcode device support iOS 13.1(DeviceSupport)

    在本文中,我们将深入探讨"Xcode Device Support iOS 13.1(DeviceSupport)"这一主题,特别是如何让低版本的Xcode支持运行高版本的iOS设备。 首先,理解"DeviceSupport"文件的作用至关重要。在Xcode中,"Device...

    DeviceNet协议 代码

    DeviceNet协议是一种基于控制器局域网络(CAN,Controller Area Network)的工业通信协议,它在自动化领域广泛应用。这个协议主要用于连接设备,如传感器、执行器和其他控制器,形成一个分布式控制系统。DeviceNet...

    iOS deviceid获取

    在iOS开发中,Device ID(设备标识符)是用于唯一标识一台特定iOS设备的一个字符串。它对于开发者来说非常重要,因为可以基于此标识符进行设备跟踪、数据分析和个性化服务。然而,Apple为了保护用户隐私,随着时间的...

    DeviceNet协议规范

    DeviceNet是基于CAN(Controller Area Network)总线技术的一种工业网络通信协议,主要用于连接工业设备,如传感器、执行器、操作面板和控制设备等。DeviceNet协议规范为设备制造商和用户提供了一个统一标准,以确保...

    ios 11.3 DeviceSupport

    在iOS开发领域,DeviceSupport文件夹是至关重要的,特别是对于开发者和越狱用户而言。标题“ios 11.3 DeviceSupport”所提及的是苹果公司iOS操作系统11.3版本的一个特定组件,它包含了用于模拟或支持特定硬件设备...

    8.26.rar_devicenet_devicenet stm32_devicenet stm32_learnv6q_stm

    基于STM32开发的DEVICENET的不完全原代码,由于版权有限,里边有几处需要修改后才能完全符合标准。

    android权限级别探索(三),设置 DeviceOwner及api收集

    一、准备工作 配置DeviceAdmin 配置DeviceAdmin可参考 android权限级别探索(二),设备管理器开启和使用及常见api,创建DeviceReceiver继承DeviceAdminReceiver,并在AndroidManifest中注册,完成两步即可。无需将...

    device-tree-xlnx-master_tree_devicetree2018.3_

    设备树(Device Tree)在嵌入式Linux系统中扮演着至关重要的角色,它是一种数据结构,用于描述硬件配置,使得操作系统内核能够更好地理解和管理硬件资源。`device-tree-xlnx-master_tree_devicetree2018.3_`这个标题...

    deviceNet soucecode from microchip

    DeviceNet是一种基于CAN(Controller Area Network)总线的工业网络协议,主要应用于自动化设备和控制系统。Microchip是一家知名的微控制器和半导体解决方案供应商,提供DeviceNet的相关源代码,以供开发者在设计和...

    DeviceNet 仅限组2协议栈源码

    DeviceNet是一种基于CAN(Controller Area Network)总线的工业网络协议,主要应用于自动化领域,它为设备间的通信提供了一种标准化的方式。这个标题提到的"DeviceNet 仅限组2协议栈源码"指的是适用于PIC18微控制器...

    UDP-Custom-Device.zip

    《NI VeriStand UDP通信Custom Device详解》 在自动化测试和控制领域,National Instruments(NI)的VeriStand是一款广泛使用的实时测试系统软件。它提供了一个灵活的平台,用于快速构建和部署各种测试系统,包括...

    功能测试工具源码DeviceTest

    《功能测试工具源码DeviceTest深度解析》 在软件开发领域,功能测试是验证软件是否按照预期功能执行的重要环节。为了提升测试效率和准确性,功能测试工具应运而生。本文将围绕“DeviceTest”这一功能测试工具的源码...

    基于Android Studio开发的笔记APP.rar

    确保Android SDK、JDK以及Gradle版本正确,并配置好Android Virtual Device (AVD)或连接真机设备用于调试。 2. **UI设计** 使用Android Studio内置的布局编辑器(XML)设计笔记APP的用户界面,通常包括主界面、...

    DeviceNet协议规范完整中文版 .pdf

    尽管如此,我们仍然可以根据标题和描述提供的信息,以及可识别的片段,推测出一些与DeviceNet协议相关的知识点。 DeviceNet是一种基于CAN(Controller Area Network)总线技术的通信协议,主要用于工业自动化领域,...

    iOS11.4 DeviceSupport

    在iOS开发过程中,开发者通常需要在Xcode中使用DeviceSupport文件来支持不同版本的iOS系统。这些文件包含了运行特定iOS版本设备的模拟器所需的信息。 标题“iOS11.4 DeviceSupport”指的是iOS 11.4版本的Device...

Global site tag (gtag.js) - Google Analytics