A send client can send a message comprising multiple message segments to a
receive client via a computer network. A data exchange server can receive
the message segments sent by the send client and store these message
segments in a storage device. The data exchange server can also send the
message (once all the message segments are received) to a receive client.
For each message segment to be sent to the receive client, the data
exchange server can calculate a transmission rate for the message segment
based upon current network throughput and send the message segment to the
receive client at the calculated transmission rate.