PROBLEMA CON SOCKET Y ENVIO POR BYTES

muchachos no veo el error:

en el server tengo algo mas o menos asi:

 

el problema es que me llega byte a byte osea si desde un cliente mando hackchan en server llega asi:

h
ha
hac
hack
hackc
hackch
hackcha
hackchan
hackchan_
hackchan_?
los dos ultimos bytes son el CRC 16, como hago para que simplemente me llegue
hackchcan_?

que pena si incomodo mas de uno pero estoy aprendiendo gracias

Opciones de visualización de comentarios

Seleccione la forma que prefiera para mostrar los comentarios y haga clic en «Guardar las opciones» para activar los cambios.
Imagen de ezamudio

entrada y salida

para empezar, tus variables   y   apuntan al stream de entrada del socket. Supongo que te equivocaste y la variable   debería apuntar realmente al stream de salida...

El problema es que estás convirtiendo cada byte a char cuando lo recibes, sin saber si después lo vas a necesitar como byte. Deberías estar guardando los bytes como bytes, para que cuando hayas recibido el mensaje completo, tomes los dos últimos bytes como el CRC16 y el resto lo puedas convertir a texto (aunque para calcular el CRC vas a necesitar tener los bytes de todas maneras).

El problema es que no conoces la longitud de lo que te va a llegar; si lo primero que te enviaran fuera la longitud entonces sabrías de antemano cuántos bytes vas a tener que leer para alojar un arreglo de ese tamaño.