c ++ Enviando estrutura pela rede
Estou trabalhando com a Intel SGX, que possui estruturas predefinidas. Preciso enviar essas estruturas através de uma conexão de rede que é operada usandoboost::asio
. A estrutura que precisa ser enviada tem o seguinte 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 o envio e recebimento, os métodosasync_write
easync_async_read_some
são 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));
enquanto quedata_
é definido como
enum { max_length = 1024 };
char data_[max_length];
Minha primeira abordagem foi transformar os elementos de estrutura única em strings e armazená-los em umvector<string>
que é posteriormente transformado emchar*
considerando que cada elemento é separado por\n
.
Mas ao montar o recebidochar*
no lado do receptor, de volta à estrutura original, encontro alguns problemas.
É realmente assim que deve ser feito ou existe uma maneira mais agradável de transferir a estrutura?