python如何通过twisted搭建socket服务
这篇文章主要介绍了python如何通过twisted搭建socket服务,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
服务端
#-*-coding:utf-8-*-
#@Time:2018/9/1921:41
#@Author:cxa
#@File:tsTservTW.py
#@Software:PyCharm
'''
TwistedReactor时间戳TCP服务器
'''
fromtwisted.internetimportprotocol,reactor
fromtimeimportctime
importmsgpack
PORT=21567
classTSServProtocol(protocol.Protocol):
defconnectionMade(self):
'''
当客户端连接的时候会执行该方法
:return:
'''
clnt=self.clnt=self.transport.getPeer().host
print(f"...来自的{clnt}链接:")
defdataReceived(self,data):
'''
接收到客户端的数据
:paramdata:
: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/1921:57
#@Author:cxa
#@File:tsTclntTW.py
#@Software:PyCharm
'''
创建TwistedReactorTCP客户端
'''
fromtwisted.internetimportprotocol,reactor
importmsgpack
HOST='localhost'
PORT=21567
classTSClntProtocol(protocol.Protocol):
defsendData(self):
data=input('>')
ifdata:
print(f'...发送数据{data}')
self.transport.write(msgpack.packb(data))
else:
self.transport.loseConnection()
defconnectionMade(self):
self.sendData()
defdataReceived(self,data):
print(msgpack.unpackb(data,encoding="utf8"))
self.sendData()
classTSClntFactory(protocol.ClientFactory):
protocol=TSClntProtocol
clientConnctionLost=clientConnctionFailed=lambdaself,connector,reason:reactor.stop()
if__name__=='__main__':
reactor.connectTCP(HOST,PORT,TSClntFactory())
reactor.run()
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。