К сожалению, не все так просто, как кажется. В произвольном случае для произвольных прикладных протоколов эта задачка надежно не решается. Предположим, я реализую подобный прокси. Разрыв TCP-соединения произошел на некоей операции send(). Как я могу узнать, надо ли мне повторить отправку тех данных, которые были в этой send() или нет? Т.е. здесь действительно лучше использовать, например, UDP и поверх UDP писать какой-то свой транспорт, который будет устойчив к длительным разрывам связи.