Busca un código de un ejemplo de chat por TCP/IP basado en un servidor central, es decir todos los mensajes van primero al servidor y luego a las máquinas de los usuarios.
Luego tienes que definir prefijos para tus comandos, cada comando debe tener un prefijo distinto y debe tener una longitud fija. Si necesitas enviar informacion de longitud variable indica la cantidad de bytes previamente.
Por ejemplo:
cNXXXXYYYYZZZZ
Podría significar las coordenadas "c" de un tanque "N", 3 numeros en punto flotante de simple precisión (cada letra corresponderia a un byte y tendrias que enviar y recibir arreglos de bytes).
Y esto:
dN
Podria significar que el tanque N hace un disparo.
Tienes que agregar además un buffer de recepción y procesar los mensajes a medida que se completan por que te puede llegar todo junto como:
cNXXXXYYYYZZZZdNdNdNcNXXXXYYYYZZZZ
Asi que tu codigo tiene que saber separar cada mensaje, sabiendo que cada uno tiene un prefijo único y una longitud fija es mejor.
Pero tambien te puede llegar esto:
cNXXXXYY
y luego recien el resto:
YYZZZZdNdNdNcNXXXXYYYYZZZZ
Asi que también tienes que poder reconocer cuando aún no ha llegado todo el mensaje y tienes que esperar hasta que este completo.
Una forma fácil es verificar que la cantidad de bytes que tienes en el buffer es mayor o igual a la longitud del mensaje actual que estas procesando.