Этот вопрос о boost :: asio :: buffer
У меня есть звонок для отправки данных через сокет TCP. Следующий звонок:
std::vector<unsigned char> data = GetDataToSend();
boost::asio::async_write(tcp_socket, boost::asio::buffer(data),
[this](const boost::system::error_code & error, std::size_t bytes_sent) {
if (!error && bytes_sent > 0) {
// Success!
}
});
Выше это здорово, пока GetDataToSend
возвращает std::vector<unsigned char>
.
Но , что если GetDataToSend
вернул uint8_t*
? Разве нельзя поместить данные uint8_t*
в boost::asio::buffer
и выполнить async_write
? Нечто вроде ниже ..
uint8_t* data = GetDataToSend();
boost::asio::async_write(tcp_socket, boost::asio::buffer(data),
[this](const boost::system::error_code & error, std::size_t bytes_sent) {
if (!error && bytes_sent > 0) {
// Success!
}
});
Это то, что boost::asio::buffer
работает только на std::vector<unsigned char>
с?
Как я могу создать boost::asio::buffer
объект из uint8_t*
? Было бы здорово, если бы я мог сделать это без дополнительной копии, если это возможно.
Я использую Boost 1.63.