Клиент является писать как этот
Garbage значение в повышение :: Массив использования с Boost, :: Asio
std::string line;
std::cin>>line;
boost::asio::write(socket, boost::asio::buffer(line));
Сервер является Чтение как этот
void reader(){
socket_.async_read_some(boost::asio::buffer(buf),
boost::bind(&tcp_connection::handle_read,shared_from_this()));
}
void handle_read()
{
std::cout.write(buf.data(),1024);
std::cout<<"\n";
}
tcp::socket socket_;
boost::array<char, 1024> buf;
Теперь, когда я пишу строку «Привет, как вы» от клиента, это просто печать «привет», а затем значения для мусора
здесь выход, который показывает сервер:
helloA0�B��B�����a�Pa�!0�B�b����uB�`�#K|BP�b��D4B���Bb�Pa���e��e�����pc�!0�Be���xB�`�#KcBe�:7B�����e��e���
как можно Я удалить этот мусор значение и получить полное сообщение/линию от клиента
И мусор проявляется из-за 2. Вы пишете 1024 байта, что намного больше, чем ваше сообщение. –
@ tsv.dimitrov, поэтому он должен заботиться о '' \ 0''. – ikh
Я думаю, std :: cout.write() всегда будет записывать количество (2-й параметр) числа байтов, независимо от того, существует ли \ 0 или нет. –