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(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。