def requestDataServer(self, content): try: # requset to data server. send certification key self.data_sock = socket.create_connection(self.dtp_server_address) send_data = Protocol.DataRequest(command=content, cert_key=(self.user_data.certkey)) logging.debug(send_data) with self.data_sock.makefile("rwb", 0) as f: f.write(send_data.serialize()) recv_data = self.parser.parse(f) logging.debug(recv_data) except Exception as e: logging.debug(e) recv_data = None else: try: # temp = self.data_sock.recv(recv_data.file_size[0]) for i in range(recv_data.file_count): size = 0 with open( here("clientdata/" + bytes.decode(recv_data.file_name[i]) + ".pdf"), "wb") as save_file: while recv_data.file_size[i] > size: if recv_data.file_size[i] - size < READ_SIZE: temp = self.data_sock.recv( recv_data.file_size[i] - size) else: temp = self.data_sock.recv(READ_SIZE) size += READ_SIZE save_file.write(temp) # logging.debug(temp) logging.debug(size) for i in range(recv_data.file_count): size = 0 with open( here("clientdata/" + bytes.decode(recv_data.file_name[i]) + ".jpg"), "wb") as save_file: while recv_data.img_file_size[i] > size: if recv_data.img_file_size[i] - size < READ_SIZE: temp = self.data_sock.recv( recv_data.img_file_size[i] - size) else: temp = self.data_sock.recv(READ_SIZE) size += READ_SIZE save_file.write(temp) # logging.debug(temp) for i in range(recv_data.file_count): rdata = "" with open( here("clientdata/" + bytes.decode(recv_data.file_name[i]) + ".xml"), "w") as save_file: with self.data_sock.makefile("rwb", 0) as f: # rdata += bytes.decode(f.readall()) rdata = self.parser.parse(f) logging.debug(rdata) save_file.write(bytes.decode(rdata.memo_content)) # save_file.write(rdata) # receive file data # with self.data_sock.makefile("rwb,0") as f: # send ACK # f.write(Protocol.DataTranferRequest()) except Exception as e: logging.debug(e) finally: if self.data_sock: self.data_sock.close() return recv_data