您好,登錄后才能下訂單哦!
這篇文章主要介紹了python如何通過twisted搭建socket服務(wù),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
服務(wù)端
# -*- coding: utf-8 -*- # @Time : 2018/9/19 21:41 # @Author : cxa # @File : tsTservTW.py # @Software: PyCharm ''' Twisted Reactor時(shí)間戳TCP服務(wù)器 ''' from twisted.internet import protocol, reactor from time import ctime import msgpack PORT = 21567 class TSServProtocol(protocol.Protocol): def connectionMade(self): ''' 當(dāng)客戶端連接的時(shí)候會(huì)執(zhí)行該方法 :return: ''' clnt = self.clnt = self.transport.getPeer().host print(f"...來自的{clnt}鏈接:") def dataReceived(self, data): ''' 接收到客戶端的數(shù)據(jù) :param data: :return: ''' print(f"來自客戶端:{msgpack.unpackb(data,encoding='utf')}") data = f"{ctime()}:來自服務(wù)器:你好" self.transport.write(msgpack.packb(data)) if __name__ == '__main__': # 創(chuàng)建一個(gè)協(xié)議工廠,之所以稱之為工廠是因?yàn)椋看蔚玫揭粋€(gè) # 接入連接時(shí),都能"制造"協(xié)議的一個(gè)實(shí)例。 factory = protocol.Factory() factory.protocol = TSServProtocol print("....等待鏈接..") # 使用reactor安裝一個(gè)TCP監(jiān)聽器,檢查服務(wù)請(qǐng)求。 # 當(dāng)它接收到一個(gè)請(qǐng)求時(shí),就會(huì)創(chuàng)建一個(gè)TSServProtocol實(shí)例來處理那個(gè)客戶端的事務(wù)。 reactor.listenTCP(PORT, factory) reactor.run()
客戶端
# -*- coding: utf-8 -*- # @Time : 2018/9/19 21:57 # @Author : cxa # @File : tsTclntTW.py # @Software: PyCharm ''' 創(chuàng)建Twisted Reactor TCP客戶端 ''' from twisted.internet import protocol, reactor import msgpack HOST = 'localhost' PORT = 21567 class TSClntProtocol(protocol.Protocol): def sendData(self): data = input('>') if data: print(f'...發(fā)送數(shù)據(jù) {data}') self.transport.write(msgpack.packb(data)) else: self.transport.loseConnection() def connectionMade(self): self.sendData() def dataReceived(self, data): print(msgpack.unpackb(data, encoding="utf8")) self.sendData() class TSClntFactory(protocol.ClientFactory): protocol = TSClntProtocol clientConnctionLost = clientConnctionFailed = lambda self, connector, reason: reactor.stop() if __name__ == '__main__': reactor.connectTCP(HOST, PORT, TSClntFactory()) reactor.run()
以上就是本文的全部內(nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持億速云。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請(qǐng)聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。