I met some problem when writing twisted.
The code is 1 #! /usr/bin/python 2 # fileName remoteCopyFile 3 from twisted.internet import protocol , reactor 4 import os 5 import updateCurrentIPList 6 import time 7 8 PORT = 7777 9 10 class TSClientProtocol(protocol.Protocol): 11 def sendData(self): 12 path = '/usr/local/'+self.factory.filename 13 if os.path.isfile(path): 14 f = open(path,'rb') 15 data = f.read() 16 f.close() 17 self.transport.write("filename="+self.factory.filename+'=') 18 self.transport.write(data) 19 self.transport.write('EOF') 20 else: 21 self.transport.loseConnection() 22 23 def connectionMade(self): 24 self.sendData() 25 26 27 def dataReceived(self,data): 28 if data == 'EOF': 29 print 'finished' 30 self.transport.loseConnection() 31 32 33 class TSClientFactory(protocol.ClientFactory): 34 def __init__(self,filename): 35 self.filename = filename 36 protocol = TSClientProtocol 37 clientConnectionLost = clientConnectionFailed = lambda self,connector,reason:reactor.stop() 38 39 def remoteCopyFile(HOST,filename = '4'): 40 reactor.connectTCP(HOST,PORT,TSClientFactory(filename)) 41 reactor.run(installSignalHandlers=0) 42 updateCurrentIPList.updateCurrentIPList(HOST) 43 reactor.connectTCP(HOST,PORT,TSClientFactory('currentIP')) 44 reactor.run(installSignalHandlers=0) 45 46 47 if __name__ == '__main__': 48 remoteCopyFile('127.0.0.1') The program print two "finished",then hang. If i delete the line 40 and 41 or delete the line 43 and 44 ,the program become good. whether can't we use two "reactor.run()" in one function? why? Thank you! _______________________________________________ Twisted-Python mailing list Twisted-Python@twistedmatrix.com http://twistedmatrix.com/cgi-bin/mailman/listinfo/twisted-python