我们已经学习了如何从套接字读取和写入数据,不过我们只是简要地提及了这一点。现在是时候学习如何详细进行数据的读取和写入了。在本课中,我们将讨论套接字 I/O 成员函数的工作原理。
套接字的 I/O 成员函数包括 socket::async_send 和 socket::async_receive。实际上,除非你确信需要它们,否则应将这些函数视为低级函数,避免直接在应用程序代码中使用它们。更有可能的情况是,你可以在这些函数之上构建一些库级别的设施。
看一下以下示例。我们已经多次看到类似的示例:
char outgoing[] = "Some outgoing message";
char incoming[256];
auto on_complete = [] (error_code error, std::size_t bytes_transferred)
{
std::cout << error.message() << ", " << bytes_transferred << "\n";
};
socket.async_send(io::buffer(outgoing), on_complete);
socket.async_receive(io::buffer(incoming), on_complete);
到目前为止,一切看起来都很熟悉。关于套接字 I/O 成员函数的主要细微之处在于