Я использую 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)
}
Но теперь мне интересно, если у меня будет несколько клиентов, нужно ли мне создавать отдельный вектор для каждого соединения?
Или я могу использовать этот единственный вектор?Если я смогу использовать этот единственный вектор, если я перезапишу содержимое внутри него, это испортит данные, которые я посылаю всем своим клиентам?