1、zmq介紹:創(chuàng)建和銷毀套接字:zmq.socket(), zmq.close()配置和讀取套接字:zmq.setsockopt(), zmq.getsockopt()為套接字建立連接:zmq.bind(), zmq.connect()發(fā)送和接收消息: zmq.send(), zmq.recv()注:使用zmq.bind()連接的節(jié)點(diǎn)稱之為服務(wù)端,它有著一個(gè)較為固定的網(wǎng)絡(luò)地址;使用zmq.connect()連接的節(jié)點(diǎn)稱為客戶端,其地址不固定。2、zmq消息模式:主要有三種常用模式: req/rep(請(qǐng)求答復(fù)模式):主要用于遠(yuǎn)程調(diào)用及任務(wù)分配等。 pub/sub(訂閱模式): 主要用于數(shù)據(jù)分發(fā)。 push/pull(管道模式): 主要用于多任務(wù)并行。3、zmq內(nèi)置的有效綁定對(duì):PUB and SUBREQ and REPREQ and XREPXREQ and REPXREQ and XREPXREQ and XREQXREP and XREPPUSH and PULLPAIR and PAIR4、具體消息模式舉例(1)、req/rep(請(qǐng)求/答復(fù)模式):一對(duì)一模式,一問(wèn)一答#server服務(wù)端import zmqcontext=zmq.Context()socket=context.socket(zmq.REP) #設(shè)置socket的類型,zmq.REP答復(fù)socket.bind(“tcp://*:15000”) #綁定服務(wù)端的IP和端口while True: #循環(huán)接收客戶端發(fā)來(lái)的消息 message=socket.recv() #接收客戶端發(fā)送來(lái)的消息,注:是byte類型 print(message) socket.send_string(“copy!”) #再發(fā)回客戶端消息結(jié)果:客戶單沒(méi)請(qǐng)求一次就打印一次消息體b’request’b’request’b’request’b’request’#client客戶端import zmq, syscontext = zmq.Context()socket=context.socket(zmq.REQ) #設(shè)置socket類型,請(qǐng)求端socket.connect(“tcp://localhost:15000”) #連接服務(wù)端的IP和端口while True: data=input(“input your request:”) if data == “q”: sys.exit() socket.send_string(data) #向服務(wù)端發(fā)送消息 message=socket.recv() #接收服務(wù)端返回的消息,注:是byte類型 print(message)”””結(jié)果:沒(méi)輸入請(qǐng)求一次,就得到服務(wù)端的一次返回input your data:123b’copy!’input your data:456b’copy!'”””(2)、pub/sub(訂閱模式):一對(duì)多模式一個(gè)發(fā)布者,多個(gè)訂閱者,訂閱者可以通過(guò)設(shè)置過(guò)濾器過(guò)濾數(shù)據(jù)。#publisher發(fā)布者import zmqcontext=zmq.Context()socket=context.socket(zmq.PUB)socket.bind(“tcp://*:15000”)while True: data = input(“input your data:”) print(data) socket.send_string(data)”””結(jié)果:循環(huán)提示輸入數(shù)據(jù),當(dāng)輸入一次,就發(fā)送一次到訂閱者input your data:123123input your data:456456input your data:789789input your data:”””#Subscriber訂閱者import sysimport zmqcontext=zmq.Context()socket=context.socket(zmq.SUB)socket.connect(“tcp://localhost:15000″)socket.setsockopt_string(zmq.SUBSCRIBE,”)或者:socket.setsockopt_string(zmq.SUBSCRIBE,’123′) #表示只過(guò)濾出收到消息為’123’的消息或者:socket.subscribe(‘topic’) #訂閱一個(gè)主題while True: message=socket.recv() print(message)”””結(jié)果:發(fā)布者每發(fā)布一次,都能訂閱到b’123’b’456’b’789′”””(3)、push/pull(管道模式):管道是單向的,從PUSH端單向的向PULL端單向的推送數(shù)據(jù)流。由三部分組成,push進(jìn)行數(shù)據(jù)推送,work進(jìn)行數(shù)據(jù)緩存,pull進(jìn)行數(shù)據(jù)競(jìng)爭(zhēng)獲取處理。區(qū)別于Publish-Subscribe存在一個(gè)數(shù)據(jù)緩存和處理負(fù)載。當(dāng)連接被斷開(kāi),數(shù)據(jù)不會(huì)丟失,重連后數(shù)據(jù)繼續(xù)發(fā)送到對(duì)端。#推送端import zmqcontext=zmq.Context()socket=context.socket(zmq.PUSH) #設(shè)置socket類型PUSH推送socket.bind(“tcp://*:5557”) #綁定IP和端口while True: data=input(“input your data:”) socket.send_string(data)”””input your data:123input your data:456input your data:789″””#worker端import zmqcontext=zmq.Context()socket_receive=context.socket(zmq.PULL) #設(shè)置socket類型PULL拉取推送端的消息socket_receive.connect(“tcp://localhost:5557”) #連接推送端IP和端口socket_sender=context.socket(zmq.PUSH) #再設(shè)置一個(gè)socket類型PUSH推送socket_sender.connect(“tcp://localhost:5558”) #連接IP和端口向其推送消息while True: data=socket_receive.recv_string() #拉取接收消息 print(data) socket_sender.send_string(data) #再將消息推送出去”””123456789″””#拉取端import zmqcontext=zmq.Context()socket=context.socket(zmq.PULL) #設(shè)置socket類型PULL拉取消息socket.bind(“tcp://*:5558″) #綁定IP和端口去拉取消息while True: message=socket.recv_string() print(message)”””123456789″””
相關(guān)推薦
劉畊宏回應(yīng)梅西輸球后哭了:跳操流汗到眼睛 剛好有點(diǎn)流鼻水
11月23日,劉畊宏發(fā)言回應(yīng)自己再梅西輸球后流淚的消息,他寫道:“我是有些難過(guò)… 然后…跳操流汗到眼睛,剛好有點(diǎn)流鼻水,阿根廷之后的比賽會(huì)贏的!”據(jù)悉,11月22日的世界杯比賽中,…
2022年11月26日0英雄聯(lián)盟手游好玩嗎(英雄聯(lián)盟手游好玩還是端游好玩)
簡(jiǎn)要回答 非常好玩,英雄聯(lián)盟手游這款游戲已經(jīng)正式的進(jìn)行公測(cè),這款游戲是以5v5為模式進(jìn)行對(duì)戰(zhàn)的,它是以英雄聯(lián)盟端游為原型進(jìn)行開(kāi)發(fā),里面的每一種玩法基本都沿襲了端游的特點(diǎn)。 01 這…
2022年11月25日0EDG粉絲酸了!JDG重磅官宣,頂級(jí)打野Kanavi留在LPL賽區(qū)
2022英雄聯(lián)盟職業(yè)聯(lián)賽冬季轉(zhuǎn)會(huì)期已經(jīng)于11月22日拉開(kāi)帷幕,在轉(zhuǎn)會(huì)期首日作為L(zhǎng)PL觀眾關(guān)注的焦點(diǎn)的JDG戰(zhàn)隊(duì),就官宣了Yagao離隊(duì)以及Homme續(xù)約的消息,這讓人十分意外。畢竟…
2022年11月25日0什么是推廣cpa一篇文章帶你看懂CPA推廣渠道
CPA渠道 CPA指的是按照指定的行為結(jié)算,可以是搜索,可以是注冊(cè),可以是激活,可以是搜索下載激活,可以是綁卡,實(shí)名認(rèn)證,可以是付費(fèi),可以是瀏覽等等。甲乙雙方可以根據(jù)自己的情況來(lái)定…
2022年11月25日0賈乃亮的消息的最新動(dòng)態(tài)(賈乃亮終于又宣布好消息)
本以為賈乃亮與李小璐官宣離婚后的畫風(fēng),該是“一別兩寬,各生歡喜”。 誰(shuí)知卻是“剪不斷,理還亂”,八卦傳聞比離婚前還多。 最近,就有不少新聞報(bào)道稱,賈乃亮和李小璐又決定為了女兒復(fù)合?!?/p>
2022年11月25日0抖音直播帶貨有哪些方法技巧(抖音直播帶貨有哪些痛點(diǎn))
如今抖音這個(gè)短視頻的變現(xiàn)能力越來(lái)越突顯了,尤其是在平臺(tái)上開(kāi)通直播,更具有超強(qiáng)的帶貨屬性,已經(jīng)有越來(lái)越多的普通人加入到其中了。不過(guò)直播帶貨雖然很火,但是也不是每個(gè)人都能做好的,那么在…
2022年11月24日0不止《阿凡達(dá)》 網(wǎng)傳海賊王新電影《RED》引進(jìn)大陸:12月1日上映
11月23日消息,20世紀(jì)影業(yè)官方正式宣布《阿凡達(dá)2:水之道》中國(guó)內(nèi)地正式定檔,12月16日同步北美上映。 好消息不止一個(gè),據(jù)博主“海賊王公會(huì)”爆料:海賊王新劇場(chǎng)版《RED》,中譯…
2022年11月24日0明查|美國(guó)新冠后遺癥患者中有16%癥狀嚴(yán)重以致無(wú)法工作?
點(diǎn)擊進(jìn)入澎湃新聞全球事實(shí)核查平臺(tái) 速覽 – 網(wǎng)傳數(shù)據(jù)比例無(wú)權(quán)威信源佐證,該比例有可能是結(jié)合了美國(guó)疾病防控中心和布魯金斯學(xué)會(huì)的數(shù)據(jù)得出,但這兩個(gè)機(jī)構(gòu)的調(diào)研目的和樣本都不同…
2022年11月24日0大疆發(fā)布DJI O3 Air Unit圖傳解決方案 售價(jià)1499元
大疆日前發(fā)布了最新的DJI O3 Air Unit 數(shù)字圖傳解決方案,該方案將DJI O3+ 圖傳與1/1.7 英寸影像傳感器相機(jī)模塊集于一身,具有高畫質(zhì)、低延時(shí)、遠(yuǎn)距離等特點(diǎn)。 …
2022年11月23日0再見(jiàn)Kanavi?被告上法庭!韓媒爆料:違規(guī)接觸JDG,散布虛假消息
最近關(guān)于JDG的轉(zhuǎn)會(huì)消息特別多,尤其是在doinb爆料Kanavi大概率和JDG續(xù)約,并且JDG要買下Ruler之后,很多人都期待明年JDG的銀河戰(zhàn)隊(duì)可以打出好的成績(jī)。但是沒(méi)想到最…
2022年11月23日0