Provavelmente não é possível fazer isso bem. Geralmente você só pode limitar a velocidade deixando uma interface. Existem hacks que deliberadamente descartam pacotes para fazer com que as sessões TCP retransmitam mais lentamente, o que funciona (em teoria) com o TCP, mas é bastante grosseiro e impreciso. Realisticamente, isso é algo que deve ser feito em um roteador, já que um roteador sempre tem uma interface onde os pacotes deixam a interface (onde os pacotes não são descartados).
Você pode querer informar qual protocolo você está usando, já que alguns softwares possuem limitações de taxa embutidas, o que pode ser útil se você tiver várias conexões simultâneas (conexões simultâneas às vezes impedem o descarte de pacotes para que conexões TCP sejam mais lentas, mas você pode limitar o número de conexões em, por exemplo, clientes P2P).