您好,登錄后才能下訂單哦!
這篇文章主要介紹了python如何通過twisted搭建socket服務,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
服務端
# -*- coding: utf-8 -*- # @Time : 2018/9/19 21:41 # @Author : cxa # @File : tsTservTW.py # @Software: PyCharm ''' Twisted Reactor時間戳TCP服務器 ''' from twisted.internet import protocol, reactor from time import ctime import msgpack PORT = 21567 class TSServProtocol(protocol.Protocol): def connectionMade(self): ''' 當客戶端連接的時候會執行該方法 :return: ''' clnt = self.clnt = self.transport.getPeer().host print(f"...來自的{clnt}鏈接:") def dataReceived(self, data): ''' 接收到客戶端的數據 :param data: :return: ''' print(f"來自客戶端:{msgpack.unpackb(data,encoding='utf')}") data = f"{ctime()}:來自服務器:你好" self.transport.write(msgpack.packb(data)) if __name__ == '__main__': # 創建一個協議工廠,之所以稱之為工廠是因為,每次得到一個 # 接入連接時,都能"制造"協議的一個實例。 factory = protocol.Factory() factory.protocol = TSServProtocol print("....等待鏈接..") # 使用reactor安裝一個TCP監聽器,檢查服務請求。 # 當它接收到一個請求時,就會創建一個TSServProtocol實例來處理那個客戶端的事務。 reactor.listenTCP(PORT, factory) reactor.run()
客戶端
# -*- coding: utf-8 -*- # @Time : 2018/9/19 21:57 # @Author : cxa # @File : tsTclntTW.py # @Software: PyCharm ''' 創建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'...發送數據 {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()
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持億速云。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。