Mam dostawcę (A), który chce przesyłać nam dane za pośrednictwem przychodzącego połączenia TCP. Niestety usługa odbierająca (B) nie może odbierać przychodzących połączeń TCP. Ponadto nie ma statycznego adresu IP, co jest kolejnym wymaganiem.
Jednym ze sposobów rozwiązania tego problemu jest usługa, która łączy przychodzący port TCP A z innym portem TCP B, dzięki czemu konsument może nawiązać połączenie wychodzące z B.
To nie jest wyjątkowy problem [1] [2] , a dzięki socat mogę stworzyć coś bardzo zbliżonego do tego, czego chcę:
socat -d -d -d -u TCP4-LISTEN:PORT-A,reuseaddr TCP4-LISTEN:PORT-B,reuseaddr
Powoduje to jednak następujące problemy:
- Jeśli B rozłączy się, nie będzie można połączyć się ponownie. Dzięki
TCP4-LISTEN:PORT-B,reuseaddr,fork
może łączyć się, ale nie odbiera danych. - B nie może się połączyć, zanim A nie ustanowi połączenia (do pokonania)
- Można ustanowić tylko jedno połączenie z
PORT-B
( do zwielokrotnienia)
Czy istnieje sposób na dostosowanie polecenia, aby stało się ono „trwałe” i odporne na awarie?