Я хочу прочитать сообщение, отправить через сокет с размером = 1257. Код для этого:
Это ActiveSocketClientConnection.h
class ActiveSocketClientConnection : public boost::enable_shared_from_this<ActiveSocketClientConnection>{
private:
boost::shared_ptr<tcp::socket> socket_;
boost::asio::streambuf data_;
...
public:
...
}
Это ActiveSocketClientConnection. cpp
void ActiveSocketClientConnection::handleConnect(const boost::system::error_code& error){
std::string sETX;
boost::asio::async_read_until(
*socket_.get(),
data_,
">",
boost::bind(&ActiveSocketClientConnection::handleReadBody,
this,
boost::asio::placeholders::error,
boost::asio::placeholders::bytes_transferred
)
);
...
}
void ActiveSocketClientConnection::handleReadBody( boost::system::error_code error, std::size_t bytes_read){
size_t t = data_.size();
unsigned char* output = (unsigned char*)malloc(t);
memcpy(output, boost::asio::buffer_cast<const void*>(data_.data()), t);
data_.consume(t);
...
}
Переменная data_ хранит только 512 (но размер завершенного сообщения 1257), поэтому сообщение, которое было повторно отправлено, является неполным.
Как я могу восстановить сообщение полностью? Я могу изменить размер, который я могу получить?
Транки.