Boost.Asio async\u write/async\u read-程序无法正常通信
你好 我正在尝试使用boost::asio实现一个问答逻辑 关于客户,我有:Boost.Asio async\u write/async\u read-程序无法正常通信,boost,asynchronous,boost-asio,messages,Boost,Asynchronous,Boost Asio,Messages,你好 我正在尝试使用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 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";
....
}
但是在阅读或写作中没有错误。这两个程序只是正常运行,但彼此不交互。
这个代码很明显,但我不明白为什么它不工作
提前感谢您的建议。底层套接字是unix还是inet套接字
您可能想尝试使用tcpdump或wireshark之类的工具来监视客户端和服务器之间的交换。我总是忘记在boost::asio::io_服务上调用run()或poll()。你这么叫吗?因为boost需要周期性地调用以发送/接收。io_服务正在运行,如boost::asio:boost::thread t(boost::bind(&boost::asio::io_服务::run,&io_服务))的示例所示;
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";
....
}
if (!error)
{
....
}
else
{
// close sockets and etc.
}