Добрый день.
Я пытаюсь реализовать логику вопроса - ответа, используя boost :: asio.
На клиенте у меня:
void Send_Message()
{
....
boost::asio::async_write(server_socket, boost::asio::buffer(&Message, sizeof(Message)), boost::bind(&Client::Handle_Write_Message, this, boost::asio::placeholders::error));
....
}
void Handle_Write_Message(const boost::system::error_code& error)
{
....
std::cout << "Message was sent.\n";
....
boost::asio::async_read(server_socket_,boost::asio::buffer(&Message, sizeof(Message)), boost::bind(&Client::Handle_Read_Message, this, boost::asio::placeholders::error));
....
}
void Handle_Read_Message(const boost::system::error_code& error)
{
....
std::cout << "I have a new message.\n";
....
}
И на сервере у меня есть код "той же логики":
void Read_Message()
{
....
boost::asio::async_read(client_socket, boost::asio::buffer(&Message, sizeof(Message)), boost::bind(&Server::Handle_Read_Message, this, boost::asio::placeholders::error));
....
}
void Handle_Read_Message(const boost::system::error_code& error)
{
....
std::cout << "I have a new message.\n";
....
boost::asio::async_write(client_socket_,boost::asio::buffer(&Message, sizeof(Message)), boost::bind(&Server::Handle_Write_Message, this, boost::asio::placeholders::error));
....
}
void Handle_Write_Message(const boost::system::error_code& error)
{
....
std::cout << "Message was sent back.\n";
....
}
Сообщение, это просто структура.
И вывод на клиенте: Message was sent.
Вывод на серверэто: I have a new message.
И это все.После этого обе программы все еще работают, но ничего не происходит.Я пытался реализовать код вроде:
if (!error)
{
....
}
else
{
// close sockets and etc.
}
Но при чтении или записи ошибок нет.Обе программы просто работают нормально, но не взаимодействуют друг с другом.Этот код довольно очевиден, но я не могу понять, почему он не работает.
Заранее спасибо за любой совет.