Я просматривал примеры boost.asio и мне интересно, почему нет примера простого примера сервер / клиент, который печатает строку на сервере и затем возвращает ответ клиенту.
Я пытался изменить эхо-сервер, но я не могу понять, что я вообще делаю.
Может кто-нибудь найти мне шаблон клиента и шаблон сервера?
Я хотел бы в конечном итоге создать приложение сервер / клиент, которое получает двоичные данные и просто возвращает клиенту подтверждение получения данных.
РЕДАКТИРОВАТЬ:
void handle_read(const boost::system::error_code& error,
size_t bytes_transferred) // from the server
{
if (!error)
{
boost::asio::async_write(socket_,
boost::asio::buffer("ACK", bytes_transferred),
boost::bind(&session::handle_write, this,
boost::asio::placeholders::error));
}
else
{
delete this;
}
}
Это возвращает клиенту только «A».
Также в data_ я получаю много странных символов после самого ответа.
Это мои проблемы.
РЕДАКТИРОВАТЬ 2:
Итак, главная проблема с клиентом.
size_t reply_length = boost::asio::read(s,
boost::asio::buffer(reply, request_length));
Поскольку это эхо-сервер, «ACK» будет появляться только тогда, когда длина запроса превышает 3 символа.
Как мне это преодолеть?
Я попытался изменить request_length на 4, но это только заставляет клиента ждать и ничего не делать.