📄 client_twisted.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 + -