async_send
要求调用者在数据发送成功之前一直保持对数据的所有权。这意味着我的代码(看起来像下面的代码)会失败,而且确实失败了,因为 data
不再是一个有效的对象。void func()
{
std::vector<unsigned char> data;
// ...
// fill data with stuff
// ...
socket.async_send(boost::asio::buffer(data), handler);
}
我的解决方案是做类似于这样的事情:
std::vector<unsigned char> data;
void func()
{
// ...
// fill data with stuff
// ...
socket.async_send(boost::asio::buffer(data), handler)
}
但是现在我在想,如果我有多个客户端,我是否需要为每个连接创建一个单独的向量?
还是可以使用一个单一的向量?如果我能够使用这个单一的向量,如果我覆盖它内部的内容,那么是否会破坏我发送给所有客户端的数据?
shared_ptr
的任何其他解决方案一样有效(例如@Tim的解决方案)。 - Eugen Constantin Dinca