Есть ли способ обнаружить EOF при чтении из сокета TCP, пока соединение сокета остается открытым?Java Server - TCP Socket обнаруживает EOF без закрытия соединения сокета
Большинство примеров, которые я видел что-то вдоль линий:
int n=0;
While((n = read.inStream(data)) != -1){
destType.write(data, 0, n);
}
Однако это означает, что вы вынуждены создать новое соединение каждый раз, когда вы хотите получить новую порцию данных. В моем случае это постоянный поток изображений, которые отправляются через сокет в виде байтов, и я хотел бы обрабатывать каждое изображение, не закрывая соединение между ними, чтобы иметь все изображения, связанные с одним пользователем, а также просто более эффективно не постоянно открывать и закрывать соединения на высокой частоте.
Так есть способ сделать это или получить некоторую информацию о возможной альтернативе?
Или используйте индикаторы начального сообщения/конечного сообщения. –
@ShaneWealti: Хотя это возможно, он становится намного более интенсивным для клиентов - вам нужно анализировать данные по мере их чтения и разрабатывать стратегию экранирования, если данные естественно включают в себя индикатор «конечного сообщения». –
Я предпочитаю оба - заголовок, устойчивый к ошибкам, начиная с SOH, который содержит длину данных в ASCII и может быть проверен структурой и проверкой работоспособности и терминатором, который включает контрольную сумму для заголовка. Если проверка заголовка не работает или терминатор плох, все данные отбрасываются до тех пор, пока не будет получено другое SOH, которое может начать другую проверку заголовка. –