使用twisted实现Python客户端

前面介绍了服务端框架,客户端中的代码可以复用其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, Protocol
from twisted.protocols.basic import LineReceiver
from twisted.internet import reactor
from twisted.internet.endpoints import TCP4ClientEndpoint

import sys
import struct
from 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给出具体代码.



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值