Hey guys, I am using the below Python code to transfer big files between a server and a client.
*Implementation to send file, server* CHUNK_SIZE = 250000 message = pair.recv() # message is the path to the file filename = open(message, 'rb') filesize = os.path.getsize(message) offsets = (int(ceil(filesize / CHUNK_SIZE)), 0)[filesize <= CHUNK_SIZE] for offset in range(offsets + 1): filename.seek(offset) chunksize = CHUNK_SIZE if offset == offsets: chunksize = filesize - (CHUNK_SIZE * (offset - 1)) # calculate the size of the last chunk data = filename.read(chunksize) pair.send(data) pair.send(b'') *Implementation to receive file, client* while True: data = pairs.recv() if data is not '': target.write(data) else: break However, after transfer a big file using this implementation, for some reason an extra data is being added at end of the file: *File server side* $ stat file.zip File: `file.zip' Size: 1503656416 Blocks: 2936840 IO Block: 4096 regular file *Client side* $ stat file.zip File: `file.zip' Size: 1503906416 Blocks: 2937328 IO Block: 4096 regular file The size and blocks are different between them. That said, do you have any suggestions to calculate/send the end of file properly? Thanks! -- *Tiago Hillebrandt* Ubuntu Member Ubuntu Brazilian Community Council Member
_______________________________________________ zeromq-dev mailing list zeromq-dev@lists.zeromq.org http://lists.zeromq.org/mailman/listinfo/zeromq-dev