【发布时间】:2020-04-01 15:11:34
【问题描述】:
我试图在程序读取特定字符时截断输入消息,为此我有下一个代码:
这是 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_ 中,不要截断存在字符 : 的消息。
谁能告诉我我做错了什么?
谢谢。
【问题讨论】:
标签: c++ boost boost-asio