def send(self): #把send拆分为preSend self.lftpSocket = Lftp.createSocket(UDP_IP, UDP_PORT) for desination in self.addresses: self.lftpSocket.addPeer(desination) ''' 发送开始包''' vsFtpPacket = VsPacket() vsFtpPacket.type = VsPacket.TYPE_BEGIN if (self.RType == "get"): vsFtpPacket.Rt = VsPacket.RT_GET elif (self.RType == "put"): vsFtpPacket.Rt = VsPacket.RT_PUT vsFtpPacket.data = FileSender.processFileName(self.fileName) if self.lftpSocket.sendToAll(vsFtpPacket.pack()) == False: print("Transmission error, quiting") sys.exit() if (self.RType == "get"): self.filehH = open(self.fileName, 'w') Lftp.registerReceiveHandler(self.lftpSocket, self.receiveHandler2) print("Started Receiver on " + str(self.lftpSocket.socket.getsockname())) # self.filehH = open(self.fileName, 'w') elif (self.RType == "put"): fileToSend = open(self.fileName) print("Openned fileToSend DF:" + str(fileToSend.fileno()) + " name: " + str(self.fileName)) Lftp.registerEventHandler(self.lftpSocket, fileSender.handleEvent) Event.eventFd(fileToSend.fileno(), self.handleFileDataAvailable, fileToSend, "FileDataAvailable")