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?