[zeromq-dev] EOF on file transfer
Pieter Hintjens
ph at imatix.com
Tue Dec 9 17:57:53 CET 2014
There is an explanation of how to do file transfer in the Guide, chapter 7.
On Tue, Dec 9, 2014 at 5:46 PM, Tiago Hillebrandt
<tiagohillebrandt at ubuntu.com> wrote:
> 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 at lists.zeromq.org
> http://lists.zeromq.org/mailman/listinfo/zeromq-dev
>
More information about the zeromq-dev
mailing list