Jedna wspólna sprawa kształtowania jednego połączenia TCP może być rzeczywiście montowane z dwoma parami socat
i cpipe
UNIX sposób jak poniżej:
socat TCP-LISTEN:5555,reuseaddr,reuseport,fork SYSTEM:'cpipe -ngr -b 1 -s 10 | socat - "TCP:localhost:5000" | cpipe -ngr -b 1 -s 300'
To symuluje połączenie z przepustowości około 300 KB / s ze swojej służby na :5000
i do około 10kB / s, a Słuchacze dotyczące :5555
połączeń przychodzących. Zastrzeżenie : Należy pamiętać, że to za-gra , więc każdego połączenia TCP pobiera tę kwotę.
Objaśnienie: Zewnętrzny (lewy) socat
nasłuchuje z podanymi opcjami :5555
jako serwer rozwidlający. Pierwsze cpipe
polecenie w SYSTEM:...
opcji ogranicza następnie dane, które trafiły do gniazda: 5555 (i wychodzą z pierwszego zewnętrznego socat
) do maksymalnie 10 kB / s. Te dane są następnie przekazywane za pomocą innego, socat
który łączy się localhost:5000
(w którym usługa, którą chcesz zwolnić, powinna nasłuchiwać). Dane z localhost:5000
są następnie umieszczane po prawej stroniecpipe
polecenia, które (przy podanych wartościach) dławi je do około 300 kB / s.
Opcja -ngr
docpipe
to ważne. Powoduje, że cpipe odczytuje niepotrzebnie odczyt z deskryptora pliku wejściowego. W przeciwnym razie możesz utknąć z danymi w buforach, które nie są przekazywane i czekają na odpowiedź.
Korzystanie z bardziej popularnego buffer
narzędzia zamiastcpipe
Możliwe jest również .
(Kredyty: Jest to oparte na przepisie „podwójnej koszulki” autorstwa Christophe Loor z socat
dokumentacji)