Определить точку (последний отправленный байт) после отключения TCP

Мне интересно, можно ли выяснить последний байт, который сервер отправил клиенту по TCP-соединению. Если говорить более подробно, у меня есть клиент и сервер, оба в C++. Они общаются с помощью XMLRPC, а соединение - по TCP. Клиент может отправить большой запрос на сервер, и для ответа сервера может потребоваться некоторое время из-за некоторых вычислений. В любой части соединения, если оно отключено, весь процесс должен выполняться с нуля, что делает сервер уязвимым для DoS-атаки.

Мой вопрос заключается в том, могу ли я выяснить, где было отключено соединение, чтобы после восстановления соединения (для того же клиента, использующего некоторые идентификаторы), сервер мог отправить оставшиеся байты из предыдущего запроса вместо обработки запроса снова.

1 ответ

Решение

Вы должны кодировать эту поддержку в свой протокол. Например, разбить ответы на 4096 байт; Затем клиент может восстановить соединение и сказать: "Я получил первые 19 блоков, пожалуйста, продолжайте с блока 20!"

Другие вопросы по тегам