asio::ip::tcp::socket::async_wait()函数会在指定的事件(例如socket是否可读/可写)发生时,通知调用者。这个函数通常与asio::wait_for_one()或asio::wait_for_any()一起使用。
下面是一个使用asio::ip::tcp::socket::async_wait()的示例:
void read_handler(const asio::error_code& error)
{
if (!error)
{
std::cout << "Data received." << std::endl;
}
}
int main()
{
asio::io_service io_service;
asio::ip::tcp::socket socket(io_service);
// 数据收到后会调用read_handler
socket.async_wait(asio::ip::tcp::socket::wait_read, read_handler);
io_service.run();
return 0;
}
在上面的示例中,当socket变为可读时,就会调用read_handler()函数。其他的事件也可以用相应的wait_*参数来指定。