В настоящее время я отправляю большие объемы данных через сокет Java и использую библиотеку Apache Commons IOUtils для копирования с использованием метода copyLarge
для отправки / получения данных.Проблема в том, что copyLarge
читает, пока входной поток не вернет -1.Я скопировал фрагмент ниже
while (-1 != (n = input.read(buffer))) {
output.write(buffer, 0, n);
count += n;
}
Этот метод будет блокировать, пока сокет не будет закрыт, но проблема в том, что я хочу повторно использовать сокет для дополнительных больших данных.Альтернативы, которые я вижу, состоят в том, чтобы либо заново открыть новый сокет для каждой передаваемой информации, либо написать собственный метод чтения, который ищет маркер конца потока (то есть символ новой строки).
Это было какое-то времятак как я написал код сокета низкого уровня, как это, но я что-то здесь упускаю?Или есть более простой способ сделать это?