[zeromq-dev] EOF on file transfer
Tiago Hillebrandt
tiagohillebrandt at ubuntu.com
Tue Dec 9 17:46:43 CET 2014
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
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.zeromq.org/pipermail/zeromq-dev/attachments/20141209/19806f0e/attachment.htm>
More information about the zeromq-dev
mailing list