Interesting... TCP (Transmission Control Protocol) should not allow data to be lost on the network, unless you are not handling the inbound data properly, or are reading half the data. If it was UDP, delivery would not be guaranteed and this problem would most certainly arise, but if it is true TCP - if you send 80 MB, all 80 MB will arrive (the sender will slow to the speed of the receiver to guarantee the packets are delivered in order, and in a reliable manner), hence "Transmission Control Protocol"
I suspect the code/protocol that is doing the reading may be at fault. Use a network packet sniffer to verify the data is all being sent - and look over the reciever code. If the code uses CSocket, check around the receive calls to ensure nothing bad happens when receive returns 0 bytes (that doesn't normally mean end-of-data, unless an error is set too!). Perhaps even set the timeouts on a setsockopt call to ensure you are allowing proper time to sit and wait for the data.