在线不卡日本ⅴ一区v二区_精品一区二区中文字幕_天堂v在线视频_亚洲五月天婷婷中文网站

  • <menu id="lky3g"></menu>
  • <style id="lky3g"></style>
    <pre id="lky3g"><tt id="lky3g"></tt></pre>

    6.Twisted UDP Socket 編程示例

    6.Twisted UDP Socket 編程示例

    示例:客戶端每隔10秒向服務(wù)端報(bào)送設(shè)備使用情況,具體數(shù)據(jù)如下:

    數(shù)據(jù)

    說(shuō)明

    值示例

    CPUUsed

    CPU占用情況 %

    35.5%

    MemTotal

    內(nèi)存 MB

    2048M

    MemFree

    可用內(nèi)存 MB

    1024M

    MemUsed

    內(nèi)存占用情況 %

    50%

    數(shù)據(jù)以文本進(jìn)行傳輸,傳輸格式:Key:Value,中間用冒號(hào)分隔。服務(wù)端只做數(shù)據(jù)的原樣顯示并回復(fù)”OK!”

    由于 UDP 沒(méi)有連接的概念,所以大多數(shù)情況下,采用 UDP Socket 實(shí)現(xiàn)的應(yīng)用都是由設(shè)備采集數(shù)據(jù)上報(bào)到服務(wù)上來(lái)運(yùn)行的。

    6.1 UDP 服務(wù)端編程

    雖然對(duì)于 UDP 來(lái)說(shuō)沒(méi)有服務(wù)端和客戶端的概念,但在實(shí)際項(xiàng)目開發(fā)中,我們一般還是要區(qū)分服務(wù)端和客戶端的。對(duì)于 UDP 服務(wù)端來(lái)說(shuō),其實(shí)代碼很簡(jiǎn)單,因?yàn)槠渲饕蝿?wù)就是接收數(shù)據(jù),然后對(duì)數(shù)據(jù)進(jìn)行處理。

    先來(lái)編寫代碼框架

    # coding: utf-8from twisted.internet import reactorfrom twisted.internet.protocol import DatagramProtocolclass Server(DatagramProtocol): def startProtocol(self): pass def datagramReceived(self, data, addr): pass def stopProtocol(self): passreactor.listenUDP(8085, Server())reactor.run()

    代碼中,主要實(shí)現(xiàn)的是 datagramReceived 事件,一般在該事件的代碼中就是我們的業(yè)務(wù)邏輯,示例代碼如下:

    def startProtocol(self): print(‘Server start.’) def datagramReceived(self, data, addr): print(“received data from %s:%s” % (addr, data)) self.transport.write(‘OK!’.encode(‘utf-8’), addr) def stopProtocol(self): print(‘Server stop.’)

    6.2 UDP 客戶端編程

    客戶端代碼相對(duì)比服務(wù)端要復(fù)雜一點(diǎn),主要是客戶端需要執(zhí)行定時(shí)任務(wù),這樣的話,我們需要設(shè)計(jì)一個(gè)線程來(lái)執(zhí)行該定時(shí)任務(wù),由于線程中需要發(fā)送數(shù)據(jù)到服務(wù)端,所以,在線程中需要設(shè)計(jì)一個(gè)屬性指向客戶端的 Protocol。線程的框架代碼如下:

    # coding: utf-8from twisted.internet import reactorfrom twisted.internet.protocol import DatagramProtocolfrom threading import Threadimport timeimport psutilclass DataThread(Thread): def __init__(self, protocol): self.protocol = protocol self.running = True super().__init__() def run(self): self.running = True pass def stop(self): self.running = False

    客戶端框架代碼:

    class Client(DatagramProtocol): def startProtocol(self): pass def datagramReceived(self, data, addr): pass def connectionRefused(self): pass def stopProtocol(self): passclient = Client()thread = DataThread(client)thread.start()reactor.listenUDP(0, client)reactor.run()thread.stop()

    線程主要通過(guò) Protocol 發(fā)送數(shù)據(jù),實(shí)現(xiàn)代碼如下:

    def run(self): self.running = True while True: if not self.running: break time.sleep(10) data = psutil.virtual_memory() total = ‘MemTotal:%0.2f’ % (data.total / 1024) # 總內(nèi)存 print(total) if self.protocol is not None: self.protocol.transport.write(total.encode(‘utf-8’)) time.sleep(1) free = ‘MemFree:%0.2f’ % (data.available / 1024) # 可用內(nèi)存 print(free) if self.protocol is not None: self.protocol.transport.write(free.encode(‘utf-8’)) time.sleep(1) memory = “MemUsed:%d” % (int(round(data.percent))) + “%” # 內(nèi)存占用情況 print(memory) if self.protocol is not None: self.protocol.transport.write(memory.encode(‘utf-8’)) time.sleep(1) cpu = “CPUUsed:%0.2f” % psutil.cpu_percent(interval=1) + “%” # CPU占用情況 print(cpu) if self.protocol is not None: self.protocol.transport.write(cpu.encode(‘utf-8’))

    客戶端 Protocol 代碼實(shí)現(xiàn)如下:

    def startProtocol(self): host = “127.0.0.1” port = 8085 print(‘Connect to %s:%s’ % (host, port)) self.transport.connect(host, port) def datagramReceived(self, data, addr): print(“received data from %s:%s” % (addr, data)) def connectionRefused(self): print(“No one listening”) def stopProtocol(self): print(‘Stop’)

    在 Protocol 啟動(dòng)時(shí)連接到服務(wù)器,這樣就可以形成 Connected UDP,相對(duì)于 UDP 來(lái)說(shuō),數(shù)據(jù)的傳輸可靠性有所提高,同時(shí),在代碼中發(fā)送數(shù)據(jù)也不需要寫服務(wù)端的地址。

    6.3 運(yùn)行效果

    服務(wù)端:

    Server start.received data from (‘127.0.0.1’, 56768):b’MemTotal:20880432.00’received data from (‘127.0.0.1’, 56768):b’MemFree:13308280.00’received data from (‘127.0.0.1’, 64355):b’MemTotal:20880432.00’received data from (‘127.0.0.1’, 64355):b’MemFree:13315952.00’received data from (‘127.0.0.1’, 64355):b’MemUsed:36%’received data from (‘127.0.0.1’, 64355):b’CPUUsed:1.20%’Server stop.

    客戶端:

    Connect to 127.0.0.1:8085MemTotal:20880432.00received data from (‘127.0.0.1’, 8085):b’OK!’MemFree:13315952.00received data from (‘127.0.0.1’, 8085):b’OK!’MemUsed:36%received data from (‘127.0.0.1’, 8085):b’OK!’CPUUsed:1.20%received data from (‘127.0.0.1’, 8085):b’OK!’MemTotal:20880432.00

    鄭重聲明:本文內(nèi)容及圖片均整理自互聯(lián)網(wǎng),不代表本站立場(chǎng),版權(quán)歸原作者所有,如有侵權(quán)請(qǐng)聯(lián)系管理員(admin#wlmqw.com)刪除。
    用戶投稿
    上一篇 2022年7月1日 18:40
    下一篇 2022年7月1日 18:40

    相關(guān)推薦

    • 短視頻策劃內(nèi)容的3個(gè)要點(diǎn)(短視頻策劃內(nèi)容怎么做)

      短視頻在制作時(shí),內(nèi)容框架非常重要。如果直奔主題,然后結(jié)束,聚卓告訴你,這樣的短視頻已經(jīng)過(guò)時(shí)了?,F(xiàn)在的短視頻需要框架的,但不是任何框架,它需要一種易于理解和消化的框架。而且,現(xiàn)在大多…

      2022年11月27日
    • 筆記本最好配置(目前筆記本最好的配置)

      本文主要講的是筆記本最好配置,以及和目前筆記本最好的配置相關(guān)的知識(shí),如果覺得本文對(duì)您有所幫助,不要忘了將本文分享給朋友。 筆記本電腦什么配置好? 01 CPU:這個(gè)主要取決于頻率和…

      2022年11月26日
    • 北京疫情為什么突然爆發(fā)(北京疫情為什么突然增多)

      這幾天北京疫情的新增情況也突然開始變得嚴(yán)重起來(lái)了,大家對(duì)本輪北京疫情爆發(fā)的原因也十分好奇。北京疫情為什么突然爆發(fā)?尤其是本周北京疫情的新增開始越來(lái)越多了,這讓民眾對(duì)于本輪疫情的發(fā)展…

      2022年11月25日
    • 為什么北京疫情越來(lái)越嚴(yán)重(疫情為什么越控制越嚴(yán)重)

      有在關(guān)注北京疫情的小伙伴應(yīng)該注意到了,這幾天北京疫情的新增數(shù)據(jù)情況也開始越發(fā)的嚴(yán)重起來(lái),大家對(duì)北京此次疫情發(fā)展情況也都不斷分析。為什么北京疫情越來(lái)越嚴(yán)重?導(dǎo)致北京本輪疫情的原因是什…

      2022年11月25日
    • 什么是推廣cpa一篇文章帶你看懂CPA推廣渠道

      CPA渠道 CPA指的是按照指定的行為結(jié)算,可以是搜索,可以是注冊(cè),可以是激活,可以是搜索下載激活,可以是綁卡,實(shí)名認(rèn)證,可以是付費(fèi),可以是瀏覽等等。甲乙雙方可以根據(jù)自己的情況來(lái)定…

      2022年11月25日
    • 抖音直播帶貨有哪些方法技巧(抖音直播帶貨有哪些痛點(diǎn))

      如今抖音這個(gè)短視頻的變現(xiàn)能力越來(lái)越突顯了,尤其是在平臺(tái)上開通直播,更具有超強(qiáng)的帶貨屬性,已經(jīng)有越來(lái)越多的普通人加入到其中了。不過(guò)直播帶貨雖然很火,但是也不是每個(gè)人都能做好的,那么在…

      2022年11月24日
    • 成都健康碼崩了是怎么回事(成都健康碼系統(tǒng)崩了)

      健康碼是大家出行必備的工具,有小伙伴反映自己健康碼崩了,上不了地鐵,那么成都健康碼崩了是怎么回事?成都健康碼怎么突然崩了?成都健康碼崩了是怎么辦?下面小編為大家?guī)?lái)成都健康碼崩了原…

      2022年11月24日
    • cpu性能天梯圖2022 AMD CPU天梯圖最新排行榜出爐

      用戶在DIY自己的主機(jī)時(shí)選擇CPU是非常關(guān)鍵的,CPU可以說(shuō)是電腦的大腦,大家也都想追求好一點(diǎn)的CPU來(lái)使用,但型號(hào)太多了,大部分的用戶都不知道目前哪一款CPU比較好用,快來(lái)看看詳…

      2022年11月24日
    • 明查|美國(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日
    • 北京新增913例感染者社會(huì)面148例在哪里(北京公交913)

      近日北京疫情的新增情況也是備受關(guān)注,當(dāng)?shù)匦l(wèi)健委每日也都會(huì)更新最新的疫情數(shù)據(jù)情況。那么,北京新增913例感染者社會(huì)面148例在哪里?目前北京哪個(gè)區(qū)域的疫情新增是最嚴(yán)重的?社會(huì)面感染者…

      2022年11月23日

    聯(lián)系我們

    聯(lián)系郵箱:admin#wlmqw.com
    工作時(shí)間:周一至周五,10:30-18:30,節(jié)假日休息