Ответ 1
Я думаю, что что-то вроде "идти в конец потока" не будет возможно для TCP-соединения. Если вызов вроде этого (см. Следующий код), подождите (блок) для закрытия соединения? И как он должен сохранять ответ, когда он достигает размера буфера (например, 1Kb)?
s.seekg (0, ios::end);
Таким образом, будет сложно (/невозможно?) реализовать реализуемый TCP-поток в целом. Даже если у вас есть неограниченный буфер (не только 1Kb).
При создании заголовка Content-Length должно быть возможно реализовать что-то вроде ввода-поиска для определенных протоколов, таких как HTTP (S). Но также в этом случае буфер фиксированного размера 1Kb не будет работать, если вы не используете заголовок диапазона HTTP/1.1.
Возможно, это помогает: Кристофер М. Коххофф (автор Boost asio) реализовал Urdl (помечен как "Prealpha" на SourceForge), где он смоделировал HTTP-соединение как IStream. Я думаю, что метод read_some может быть вам интересен: https://github.com/jnorthrup/urdl/blob/master/include/urdl/detail/http_read_stream.hpp#L426