c ++ Envío de estructura a través de la red

Estoy trabajando con Intel SGX que tiene estructuras predefinidas. Necesito enviar estas estructuras a través de una conexión de red que se opera utilizandoboost::asio. La estructura que debe enviarse tiene el siguiente formato:

typedef struct _ra_samp_request_header_t{
    uint8_t  type;     /* set to one of ra_msg_type_t*/
    uint32_t size;     /*size of request body*/
    uint8_t  align[3];
    uint8_t body[];
} ra_samp_request_header_t;

Para el envío y la recepción, los métodos.async_write yasync_async_read_some son usados

boost::asio::async_write(socket_, boost::asio::buffer(data_, max_length),
                                          boost::bind(&Session::handle_write, this,
                                          boost::asio::placeholders::error));

socket_.async_read_some(boost::asio::buffer(data_, max_length),
                            boost::bind(&Session::handle_read, this,
                            boost::asio::placeholders::error,
                            boost::asio::placeholders::bytes_transferred));

mientrasdata_ Se define como

enum { max_length = 1024 };
char data_[max_length];

Mi primer enfoque fue transformar los elementos de estructura única en cadenas y almacenarlos en unvector<string> que luego se transforma enchar* mientras que cada elemento está separado por\n.

Pero al ensamblar lo recibidochar* en el lado del receptor de vuelta a la estructura original me encuentro con algunos problemas.

¿Es esta realmente la forma en que esto debería hacerse o hay una forma más agradable y suficiente de transferir la estructura?

Respuestas a la pregunta(1)

Su respuesta a la pregunta