zoukankan      html  css  js  c++  java
  • 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()
  • 相关阅读:
    Jquery实现类似百度的搜索框
    Spring mvc 初始化过程
    Git学习笔记(2)-Eclipse中Git插件使用
    Git学习笔记(1)
    Tomcat7设置环境变量供java代码读取
    webpack+gulp实现自动构建部署
    netty 粘包问题处理
    java 并发工具类CountDownLatch & CyclicBarrier
    add spring-boot modules to maven project
    Spring Boot (#1 quick start)
  • 原文地址:https://www.cnblogs.com/yeshengCqupt/p/13472070.html
Copyright © 2011-2022 走看看