[关闭]
@john-lee 2021-01-02T13:54:55.000000Z 字数 1000 阅读 982

流、短读和短写(Streams, Short Reads and Short Writes)

Boost.Asio


Boost.Asio 中的许多 I/O 对象是面向流的。这意味着:

提供面向流的 I/O 模型的一个或多个以下类型要求的对象:

面向流的 I/O 对象的示例包括ip::tcp::socketssl::stream<>posix::stream_descriptorwindows::stream_handle等待。

程序通常要传输精确的字节数。当发生短读或短写时,程序必须重新启动操作,并继续这样做,直到传输了所需的字节数。Boost.Asio 提供自动执行此操作的常规函数:read()async_read()write()async_write()

为什么 EOF 是错误
  • 流的结束可能导致readasync_readread_untilasync_read_until函数违反其约定。例如,由于 EOF,读取 N 个字节可能会提前完成。
  • EOF 错误可用于区分流的末尾和大小为 0 的成功读取。
另请参阅

async_read(), async_write(), read(), write(), AsyncReadStream, AsyncWriteStream, SyncReadStream, SyncWriteStream.


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)

添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注