Tek bir TCP bağlantısını şekillendirmenin yaygın bir örneği, aslında aşağıdaki gibi çift çiftlerden socat
ve cpipe
UNIX tarzında birleştirilebilir:
socat TCP-LISTEN:5555,reuseaddr,reuseport,fork SYSTEM:'cpipe -ngr -b 1 -s 10 | socat - "TCP:localhost:5000" | cpipe -ngr -b 1 -s 300'
Bu yaklaşık 300KB / s bant genişliğine sahip bir bağlantı taklit gelen adresinden hizmet :5000
ve karşı yaklaşık olarak 10KB / s ve üzerinde dinler :5555
gelen bağlantılar için. Uyarı : Bu bağlantı başına , her bir TCP bağlantısının bu miktarı alacağını unutmayın.
Açıklama: Dış (sol) socat
, verilen seçenekler :5555
çatal sunucu olarak dinler . Seçenekteki ilk cpipe
komut SYSTEM:...
daha sonra sokete giren verileri socat
kısar : 5555 (ve ilk, dıştan çıkar ) en fazla 10kByte / s'ye. Bu veriler daha sonra socat
bağlanan başka bir veri kullanılarak iletilir localhost:5000
(yavaşlamak istediğiniz servisin dinlenmesi gerekir). Daha sonra gelen veriler localhost:5000
sağ cpipe
komuta konur (verilen değerlerle) yaklaşık 300kB / s'ye kısar.
Seçenek -ngr
için cpipe
önemlidir. Cpipe'ın girdi dosya tanımlayıcısından açgözlü olmayan bir şekilde okumasına neden olur. Aksi takdirde, arabelleklerdeki veriler iletilmez ve yanıt beklenir.
buffer
Bunun yerine daha yaygın bir aracın kullanılması da cpipe
mümkündür.
(Kredi: Bu, Christophe Loor'un socat
dokümantasyondaki "çift tişört" tarifine dayanmaktadır )