js中正則的分組匹配
更多python教程請到: 菜鳥教程 https://www.piaodoo.com/
這篇文章主要介紹了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 msgpackPORT = 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 msgpackHOST = 'localhost'
PORT = 21567class 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()
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支援菜鳥教程www.piaodoo.com。