может кто объяснить, почему?
asio::io_service io_service;
std::vector<asio::ip::tcp::socket> sockets{};
asio::ip::tcp::acceptor acceptor(io_service, asio::ip::tcp::endpoint(asio::ip::address::from_string("127.0.0.1"), 59999));
std::array<unsigned char, 65536> temp_buffer;
std::string temp_str_buff;
std::thread first([&temp_str_buff, &stop_receiving_data, &sockets, &temp_buffer, &counter, &acceptor, &io_service]
{
while (1)
{
if (stop_receiving_data != true)
{
sockets.emplace_back(io_service);
asio::ip::tcp::socket& socket{ sockets.back() };
acceptor.accept(socket);
socket.read_some(asio::buffer(temp_buffer));
std::array<unsigned char, 65536>::iterator it = std::find(temp_buffer.begin(), temp_buffer.end(), '*');
std::copy(temp_buffer.begin(), temp_buffer.begin() + std::distance(temp_buffer.begin(), it), std::back_inserter(temp_str_buff));
std::string label;
std::string encrypted_label_and_choice;
std::string delimeter = "\n";
size_t pos = 0;
while ((pos = temp_str_buff.find(delimeter)) != std::string::npos)
{
label = temp_str_buff.substr(0, pos);
temp_str_buff.erase(0, pos + delimeter.length());
encrypted_label_and_choice = temp_str_buff.substr(0, temp_str_buff.size()-1);
break;
}
std::cout << label << " --- " << encrypted_label_and_choice << endl << endl;
counter.get_label_and_endcrypted_lbl_and_choice().push_back({ label,encrypted_label_and_choice });
socket.close();
}
else
{
break;
}
}
});
system("pause");
stop_receiving_data = true;
acceptor.close();
first.join();
На pastebin
на pastebin эту портянку, плиз
а где задается значение temp_str_buff? А то там дальше temp_str_buff.size()-1 а на нулевом размере будет бо-бо
std::copy(temp_buffer.begin(), temp_buffer.begin() + std::distance(temp_buffer.begin(), it), std::back_inserter(temp_str_buff));
Есть варианты?
А дебаггинг там с брейпоинтами был уже?
Обсуждают сегодня