Tôi có một nhà cung cấp (A) muốn gửi dữ liệu cho chúng tôi thông qua kết nối TCP đến. Thật không may, dịch vụ tiêu thụ (B) không thể nhận các kết nối TCP gửi đến. Ngoài ra, nó không có IP tĩnh, một yêu cầu khác.
Một cách để giải quyết vấn đề này là dịch vụ kết nối cổng TCP A đến với cổng TCP B khác, để người tiêu dùng có thể thực hiện kết nối ra bên ngoài đến B.
Đây không phải là một vấn đề duy nhất [1] [2] và với socat tôi có thể tạo ra thứ gì đó rất gần với những gì tôi muốn:
socat -d -d -d -u TCP4-LISTEN:PORT-A,reuseaddr TCP4-LISTEN:PORT-B,reuseaddr
Tuy nhiên, điều này có các vấn đề sau:
- Nếu B ngắt kết nối, nó không thể kết nối lại. Với
TCP4-LISTEN:PORT-B,reuseaddr,fork
, nó có thể kết nối nhưng không nhận được dữ liệu. - B không thể kết nối trước khi A thiết lập kết nối (có thể vượt qua)
- Chỉ có một kết nối có thể được thiết lập để
PORT-B
(có thể vượt qua)
Có cách nào để điều chỉnh lệnh sao cho trở thành "vĩnh viễn" và chống lại sự thất bại?