Check your implementation for optimal packet size and ENSURE that you dont make a new connection for EVERY packet.
I found this
fine example or this for
Linux.
Tip: play around with different packet sizes. My tip is, that 1024 bytes will go faster, because the packet amount is decreasing. 1500 not optimal: 1024 + 476 => 1 packet only half full.
"Ofcourse are there other ways": copy it on a USB-Stick and send it via postal service,. ;-)