再会。
我正在尝试使用 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.
}
但是读或写都没有错误。两个程序都只是正常运行,但不相互交互。这段代码很明显,但我不明白为什么它不起作用。
提前感谢您的任何建议。