Re: OverflowError while sending large file via socket
En Sun, 12 Apr 2009 19:28:43 -0300, > escribió: Ryniek90 writes: When i wanted to send an .iso file of 4GB length, i had traceback: "OverflowError: requested number of bytes is more than a Python string can hold" You're not supposed to put the 4GB all in one string. Open the socket and send smaller packets through it. And instead of reinventing the wheel again, use the shutil module to do exactly that. -- Gabriel Genellina -- http://mail.python.org/mailman/listinfo/python-list
Re: OverflowError while sending large file via socket
Steven D'Aprano REMOVE-THIS-cybersource.com.au> writes: > > which suggests to me that it will be implementation dependent The length of sequences is constrained by sys.maxsize (and no, you can't change it). -- http://mail.python.org/mailman/listinfo/python-list
Re: OverflowError while sending large file via socket
On 13 Apr 2009 01:45:56 GMT, Steven D'Aprano wrote: On Mon, 13 Apr 2009 00:21:34 +0200, Ryniek90 wrote: When i wanted to send an .iso file of 4GB length, i had traceback: "OverflowError: requested number of bytes is more than a Python string can hold" Sockets are being used in every network app, i.e: p2p progs (like BitTorrent), and exchanged data is often bigger than 4GB. But they don't transfer the entire file as ONE packet. Split your data into smaller packets. I don't know what a good size for each packet would be, but if I were doing this, I'd probably start with 4096 or 8192 *bytes*. Everything in that paragraph is true, but it's rather misleading. The size of the packets you send is *not* determined by the length of the string you pass to socket.send. Packet size in a TCP connection is determined by various things beyond the control of an application using the BSD socket API. Jean-Paul -- http://mail.python.org/mailman/listinfo/python-list
Re: OverflowError while sending large file via socket
On Mon, 13 Apr 2009 00:21:34 +0200, Ryniek90 wrote: > When i wanted to send an .iso file of 4GB length, i had traceback: > "OverflowError: requested number of bytes is more than a Python string > can hold" > > Sockets are being used in every network app, i.e: p2p progs (like > BitTorrent), and exchanged data is often bigger than 4GB. But they don't transfer the entire file as ONE packet. Split your data into smaller packets. I don't know what a good size for each packet would be, but if I were doing this, I'd probably start with 4096 or 8192 *bytes*. http://www.amk.ca/python/howto/sockets/ > So why i've > had that Traceback? How many number of bytes Python string can hold? The documentation doesn't seem to specify a maximum string length: http://docs.python.org/library/stdtypes.html which suggests to me that it will be implementation dependent. However, I'd guess that the current CPython implementation will have a hard limit of 2**32 bytes (4GB), and a soft limit on the amount of memory that you have. You're trying to create a single, continuous block of memory 4GB in size! Unless you've got *at least* 4GB of RAM, this is impossible even in principle, and in practice you need more than that to allow for the overhead of the operating system, Python, and any other applications you have running. -- Steven -- http://mail.python.org/mailman/listinfo/python-list
Re: OverflowError while sending large file via socket
Ryniek90 writes: > When i wanted to send an .iso file of 4GB length, i had traceback: > "OverflowError: requested number of bytes is more than a Python string > can hold" You're not supposed to put the 4GB all in one string. Open the socket and send smaller packets through it. -- http://mail.python.org/mailman/listinfo/python-list
OverflowError while sending large file via socket
When i wanted to send an .iso file of 4GB length, i had traceback: "OverflowError: requested number of bytes is more than a Python string can hold" Sockets are being used in every network app, i.e: p2p progs (like BitTorrent), and exchanged data is often bigger than 4GB. So why i've had that Traceback? How many number of bytes Python string can hold? -- http://mail.python.org/mailman/listinfo/python-list