• python Twisted框架


    twisted框架是一个完整的事件驱动的网络框架,利用它既能使用也能开发完整的异步网络应用程序和协议。

    用python的twisted框架搭建一个服务器和客户端

    服务器

    from twisted.internet import protocol, reactor
    from time import ctime
    
    PORT = 21566
    class TSServProtocol(protocol.Protocol):
        def connectionMade(self): #重写connectMade方法
            clnt = self.clnt = self.transport.getPeer().host
            print('...connect from', clnt)
    
        def dataReceive(self, data): #接收数据
            self.transport.write('[%s] %s' %(ctime(), data.encode()))
    
    factory = protocol.Factory() #创建了一个协议工厂,每次得到一个接入连接时,都能制造协议的一个实例,然后在reactor中安装一个TCP监听器,以此检查服务请求,
    factory.protocol = TSServProtocol
    print('waiting for connection...')
    reactor.listenTCP(PORT, factory)
    reactor.run()

    客户端

    from twisted.internet import protocol, reactor
    
    HOST = 'localhost'
    PORT = 21566
    
    class TSClntProtocol(protocol.Protocol):
        def senData(self):
            data = input('>')
            data = data.encode()
            if data:
                print('...sending %s ....' % data)
                self.transport.loseConnection() #执行losseConnection关闭套接字
        def connectionMade(self):
            self.senData()
        def dataReceived(self, data):
            print(data)
            self.senData()
    class TSClntFactory(protocol.ClientFactory):
        protocol = TSClntProtocol
        clientConnectionLost = clientConnectionFailed = lambda self,connector, reason:reactor.stop()
    
    reactor.connectTCP(HOST, PORT, TSClntFactory()) #创建客户端工厂,创建了一个到服务器的连接并运行reactor
    reactor.run()
  • 相关阅读:
    想要提高自己的写作水平?吃透这篇文章就够了
    Linux(Ubuntu)下搭建ASP.NET Core环境
    详解ASP.NET Core Docker部署
    《你有多少问题要请示》精华集粹
    5年,我从文员一路晋升到总监,薪资翻了5倍[转]
    《设计你的人生》的部分经典语录
    深入浅出Redis-redis哨兵集群[转]
    什么是全栈开发者
    Asp.net mvc中应用autofac
    js unicode处理
  • 原文地址:https://www.cnblogs.com/yeshengCqupt/p/13472070.html
Copyright © 2020-2023  润新知