Hola:
A bajo nivel todo se maneja solo, los paquetes IP tienen sus longitudes y sus cosas y te garantizan la fiabilidad completa. Pero a nivel de tu aplicación java todo eso es transparente para tí. A ti te garantizan que si desde el otro lado envían 10 bytes, a tí te llegan 10 bytes bien, independientemente que por debajo se haya enviado un paquete IP o dos, y las longitudes que tengan y checsums y demás.
Eres tú, a alto nivel, el que tiene que poner o saber cómo separar los mensajes.
Si los fin de línea son realmente fin de línea, puedes leerlo como lo haces. Cada lectura te dará hasta un fin de linea, pero el resto de los caracteres no se tiran (salvo que los tires tú inadvertidamente) y lo que tienes que hacer es ir leyendo repetidamente
Código java:
Ver originalString linea
= buffer.
readLine(); while (linea != null) {
// trata linea
linea = buffer.readLine();
}
Lo que no puedes hacer (no sé si lo haces, pero me da esa impresión por el nombre de la variable) es crear el BufferedReader cada vez que quieras leer una trama.
Se bueno.