使用twisted实现Python客户端

来源:互联网 发布:三阶矩阵的逆矩阵公式 编辑:程序博客网 时间:2024/05/24 04:05

前面介绍了服务端框架,客户端中的代码可以复用其package.py和dispatch.py.

服务端方面一般是控制台运行,可是客户端大部分都是带ui的.

这里分别介绍

1.console

客户端启动 main.py

这里的PyConfigure不做介绍

from config import *from tcp import *def main():#[0] load configure json    cfg = PyConfigure( "cfg.json" )    host = cfg.get_value( "host" )    port = cfg.get_value( "port" )#[1] connect server    factory = PyClientFactory()    try:        reactor.connectTCP( host, port, factory )        reactor.run()    except:        print "connect server error."if __name__ == '__main__':    main()
客户端实现 tcp.py

from twisted.internet.protocol import ClientFactory, Protocolfrom twisted.protocols.basic import LineReceiverfrom twisted.internet import reactorfrom twisted.internet.endpoints import TCP4ClientEndpointimport sysimport structfrom dispatch import *class PyTcpClient( Protocol ):    def __init__( self ):        self.dispatcher = PyDispatcher( self )    def connectionMade( self ):        print "login"    def connectionLost( self, reason ):        print "connection lost"    def dataReceived( self, data ):        print "receive:", data        self.dispatcher.dispatch( data )    def dataSend( self, data ):        print data        self.transport.write( data )class PyClientFactory( ClientFactory ):    protocol = PyTcpClient    def clientConnectionFailed( self, connector, reason ):        print 'connection failed:', reason.getErrorMessage()        reactor.stop()    def clientConnectionLost( self, connector, reason ):        print 'connection lost:', reason.getErrorMessage()        reactor.stop()
ok,这样就可以工作了.不过代码不够简洁.
2.ui

其实比较简单:把

reactor.run()
放到线程里面.

在下面结合pyQT4给出具体代码.



原创粉丝点击