Jedna wspólna sprawa kształtowania jednego połączenia TCP może być rzeczywiście montowane z dwoma parami socati cpipeUNIX 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 :5000i do około 10kB / s, a Słuchacze dotyczące :5555połą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) socatnasłuchuje z podanymi opcjami :5555jako serwer rozwidlający. Pierwsze cpipepolecenie 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, socatktó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 -ngrdocpipe 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 buffernarzędzia zamiastcpipeMożliwe jest również .
(Kredyty: Jest to oparte na przepisie „podwójnej koszulki” autorstwa Christophe Loor z socatdokumentacji)