Recepción de datos desde Java-Client (los datos contienen int, short, string)

Estaba buscando horas para obtener una respuesta sobre mi pregunta, pero no encontré nada. Tal vez consiga algo de ayuda aquí.

Lo que estoy tratando de hacer: un cliente Java envía un mensaje a un servidor C. El mensaje contiene diferentes tipos como entero, corto y también una cadena (por ejemplo, mensaje = int: total_msg_length; corto: operación; cadena: hola -> total_msg-longitud = 4 (tamaño del entero), operación = 2 (tamaño del corto) , hola = 5 (cada letra es 1 byte = 5).

Entonces, ¿cómo puedo recibir el mensaje en mi servidor? El siguiente código recibe un entero (funciona bien). El siguiente paso será recibir un corto y luego una cadena (convertida en US-ASCII).

int *msg;
int recv_size;
int final_msg;

if( (recv_size = recv(client_socket, &msg, sizeof(msg), 0 )) < 0 ){
    error_exit("Fehler bei recv(message_len)");
}

final_msg = endian_swap(msg);
printf("Message: %d\n", final_msg);

return final_msg;

¿Hay alguna manera de usar una matriz de bytes en lugar de un búfer de caracteres? Estoy agradecido por cada ayuda. Por favor, disculpe mi mal inglés, soy de Alemania :-)