⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 client_twisted.py

📁 python + wxpython + twisted 服务器和客户端demo代码
💻 PY
字号:
from twisted.internet.protocol import Protocol, ClientFactory
from twisted.internet import reactor,defer
from sys import stdout,stdin
from twisted.internet import stdio

frame=None
def inputText(factory):
    print ":::: "+factory.user+"\r\n"
    print ":::: "+factory.password+"\r\n"
    if 1 :
        text=stdin.readline()
        factory.buildProtocol().transport.write(text)

class xdClientProtocol(Protocol):
    inused=0
    def connectionMade(self):
        print"Debug: "+self.factory.user+" "+self.factory.password+"\r\n"
        #self.transport.write("userstart %s userend,passwordstart $s passwordend\r\n" %(self.factory.user,self.factory.password))
        self.transport.write("userstart xd userend,passwordstart apples passwordend\r\n")
        self.factory.deferred.callback("Connected!")

    def dataSend(self,data):
        if clientConnector.state=='''connected''':
            self.transport.write(data)

    def dataReceived(self, data):
        stdout.write(data)
        self.transport.write("mesS desS xd desE souS cvs souE conS welcomexd conE mesE\r\n")


class xdClientFactory(ClientFactory):
    user=""
    password=""
    protocol=xdClientProtocol
    protocolInstance=None

    def __init__(self,user,password):
        self.user=user
        self.password=password
        self.deferred=defer.Deferred()

    def startedConnecting(self, connector):
        print 'Started to connect.'

    def buildProtocol(self, addr):
        print 'Connected.'
        self.protocolInstance=self.protocol()
        self.protocolInstance.factory=self
        return self.protocolInstance

    def clientConnectionLost(self, connector, reason):
        self.deferred.errback(reason)
        print 'Lost connection. Reason:', reason
        reactor.stop()

    def clientConnectionFailed(self, connector, reason):
        self.deferred.errback(reason)
        print 'Connection failed. Reason:', reason
        reactor.stop()

def runClient(host,port,user,password):
    client=xdClientFactory(user,password)
    #reactor.callLater(6,inputText,client)
    #reactor.callFromThread(inputText,client)
    clientConnector=reactor.connectTCP(host,port,client)
    return client.deferred

def handelSuccess(result,port):
    print "Connected from port %i"%port
    #reactor.stop()

def handelFailure(failure,port):
    print "Error: connectin from port %i: %s\r\n"%(
          port,failure.getErrorMessage())
    #reactor.stop()

if __name__ =="__main__":
    host="localhost"
    port=8001
    clientConnector=0
    connecting=runClient(host,port,"cvs","apples")
    connecting.addCallback(handelSuccess,port)
    connecting.addErrback(handelFailure,port)
    reactor.run()

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -