Мы работаем над взаимодействием между клиентом Filezilla и сервером Filezilla, имеющим два прокси между ними. Между двумя прокси у нас есть 2 TCP соединения.
клиент filezilla -> P1 --2 ----- P2 -> сервер filezilla.
Проблема, которую мы получаем, заключается в том, что при загрузке клиент filezilla отправит все данные на P1, а P1 отправит данные на P2. Но P2 recv. Скорость не так высока, как скорость отправки P1. Через некоторое время P1 закроет соединение, но, поскольку P2 все еще пытается извлечь данные из P1, он не сможет восстановить и потерпит неудачу.
Есть ли какой-нибудь способ сохранить сокет живым, пока другой конец не восстановит данные полностью?
Я пытался использовать Linger с разными параметрами тайм-аута. но он не обрабатывает все сценарии.
Я попытался установить опцию сокета keepalive, но проблема все еще остается.
Может кто-нибудь помочь или предложить мне что-нибудь?