@john-lee
2021-01-02T14:47:36.000000Z
字数 738
阅读 584
Boost.Asio
有时,程序必须与想要执行 I/O 操作本身的第三方库集成。为了促进这一点,Boost.Asio 包括同步和异步操作,这些操作可用于等待套接字准备好读取、准备写入或出现挂起的错误情况。
例如,要执行非阻塞读取,可以使用以下类似的操作:
ip::tcp::socket socket(my_io_context);
...
socket.non_blocking(true);
...
socket.async_wait(ip::tcp::socket::wait_read, read_handler);
...
void read_handler(boost::system::error_code ec)
{
if (!ec)
{
std::vector<char> buf(socket.available());
socket.read_some(buffer(buf));
}
}
这些操作支持所有平台上的套接字,以及 POSIX 的面向流的描述符类。
basic_socket::wait(),basic_socket::async_wait(),basic_socket::non_blocking(),basic_socket::native_non_blocking(),非阻塞示例。
Copyright © 2003-2020 Christopher M. Kohlhoff
Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)