【发布时间】:2011-03-17 20:25:23
【问题描述】:
我正在将 Boost.Asio 用于我正在编写的服务器应用程序。
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)
}
但现在我想知道如果我有多个客户端,是否需要为每个连接创建一个单独的向量?
或者我可以使用那个单一的向量吗?如果我能够使用该单个向量,如果我覆盖其中的内容,是否会弄乱我发送给所有客户的数据?
【问题讨论】:
标签: c++ boost-asio