Я пытаюсь усечь входное сообщение, когда программа прочитала указанный c символ, для этого у меня есть следующий код:
Это 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;
sETX.push_back(0x3A); //0x3A = :
boost::asio::async_read_until(
*socket_.get(),
data_,
sETX.c_str(),
boost::bind(&ActiveSocketClientConnection::handleReadBody,
this,
boost::asio::placeholders::error
)
);
}
void ActiveSocketClientConnection::handleReadBody( boost::system::error_code error){
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);
...
}
Если я передаю сообщение (например) AA: A с сокетным соединением. Функция async_read_until сохраняет все сообщения в data_ , не усекает сообщение, в котором присутствует символ : .
Кто-то может сказать мне, что я делаю не так?
Спасибо.