У меня есть некоторые проблемы. У меня есть клиент и сервер. Клиент подключается к серверу через TCP. Затем клиент отправляет некоторые данные (разделенные кусками), я не знаю, какова длина данных (рукопожатие TLS). Но я знаю, что клиент отправляет некоторые данные с фиксированной длиной, а затем останавливается, пока не получит какой-либо ответ, а затем снова отправит данные с фиксированной длиной.Как читать данные из сокета, пока клиент не остановит отправку?
Мне нужно прочитать все куски, пока клиент не остановит отправку (потому что так много кусков). Как это сделать ?
У меня есть только одна идея, это таймаут. Прочитайте данные в цикле и установите тайм-аут между итерацией. Если тайм-аут завершен, данные собираются.
Возможно, есть более элегантное решение?
Можете ли вы привести пример того, что вы пытаетесь сделать? Вопрос не имеет смысла, как есть. – JimB
Я не совсем понимаю ваш вопрос, но, как правило, вы представляете тело с «io.Reader», и вы можете просто прочитать его до конца ... В случае фрагментированного ответа вы полностью абстрагированы от отдельные куски, вы видите это как поток текстовых данных ... То же, что и тело, которое было подано сразу. Надеюсь, это поможет. – evanmcdonnal
@JimB Browser (aka client), подключитесь к моему серверу и прокси-сайту https. Для прокси-сервера через https браузер отправляет запрос CONNECT, прослушивает ответ 200 OK, а затем посылает мне зашифрованные данные, например, chunk1 - 167 bytes, chunk2 - 312 bytes, chunk3 - 72 байта Затем браузер останавливается , и ожидание ответа, после получения ответа браузера снова отправить куски. Мне нужно собрать chunk1, chunk2, chunk3 в одном куске, но я не знаю, когда браузер остановился, чтобы отправить куски, и переключитесь в состояние ожидания. Надеюсь, теперь это ясно :)? – sintanial