A method of controlling transmission of successive packets of known packet size, P, of a content to be transmitted to achieve a target bandwidth B T, during the transmission, the method comprising the steps of: receiving a target bandwidth, B T, to be achieved during the transmission; receiving the packet size, P, of the packets during the transmission; characterized by computing a wait time, t w, between starting times of successive packets of the transmission such that t w = P B T; determining a starting time t 1 oftransmission of a packet; determining an ending time t 2 of transmission of the packet, computing the time used, t used, in transmitting the packet as t 2 - t 1; computing a residual time, t, between an ending time of one packet and a starting time of a next successive packet based on t w - t used; and controlling the starting time oftransmission of the packets by waiting the residual time, t, between the ending time of transmission of one packet and the starting time of transmission of the next packet to establish the wait time, t w, between the starting times of successive packets, by: determining a value of starting time t start of transmitting a packet and a current time t now; performing a loop operation of: (a) computing a time t elapsed = t now - t start, (b) comparing t elapsed to the residual time t and transmitting the next packet when the value of t elapsed ≥ t, further comprising the steps of computing an error value δ = t elapsed - t and subtracting the value δ from a later supplied value of t. receiving a target bandwidth, B T, to be achieved during the transmission; receiving the packet size, P, of the packets during the transmission; characterized by computing a wait time, t w, between starting times of successive packets of the transmission such that t w = P B T; determining a starting time t 1 oftransmission of a packet; determining an ending time t 2 of transmission of the packet, computing the time used, t used, in transmitting the packet as t 2 - t 1; computing a residual time, t, between an ending time of one packet and a starting time of a next successive packet based on t w - t used; and controlling the starting time oftransmission of the packets by waiting the residual time, t, between the ending time of transmission of one packet and the starting time of transmission of the next packet to establish the wait time, t w, between the starting times of successive packets, by: determining a value of starting time t start of transmitting a packet and a current time t now; performing a loop operation of: (a) computing a time t elapsed = t now - t start, (b) comparing t elapsed to the residual time t and transmitting the next packet when the value of t elapsed ≥ t, further comprising the steps of computing an error value δ = t elapsed - t and subtracting the value δ from a later supplied value of t. determining a value of starting time t start of transmitting a packet and a current time t now; performing a loop operation of: (a) computing a time t elapsed = t now - t start, (b) comparing t elapsed to the residual time t and transmitting the next packet when the value of t elapsed ≥ t, (a) computing a time t elapsed = t now - t start, (b) comparing t elapsed to the residual time t and transmitting the next packet when the value of t elapsed ≥ t, further comprising the steps of computing an error value δ = t elapsed - t and subtracting the value δ from a later supplied value of t.