可以读取或写入数据 连接TCP套接字使用 receive(),async_receive(),send()或 async_send()成员函数。 但是,因为这些可能导致 短写或读,一个应用程序 通常会使用以下内容 操作代替:read(), async_read(),write()和 ASYNC_WRITE()。
我真的不明白那句话是read(),async_read(),write()和async_write()也可能以短写或读取结束,对吧?
为什么这些功能不一样?
我应该使用它们吗?
有人可以为我澄清这句话吗?
答案 0 :(得分:6)
读取, async_read ,写入和 async_write 是组合功能多次调用类函数,直到发送所请求的字节数。为方便起见,图书馆将其包含在内。否则,每个开发人员都需要实现相同的逻辑。
类函数直接包装底层的OS函数,这基本上在文档中说明:这些函数可能在所有字节传输之前返回。
在大多数情况下,您应该使用免费(合成)功能来传输数据。
答案 1 :(得分:-1)
首先,你必须理解“异步”这个词,它只是意味着“不必等待”。 调用异步操作后,以下操作将执行而不等待异步操作返回。同步必须等待,直到先前的同步操作返回。 来自Boost.Asio的以下两个样本将有意义: A synchronous TCP daytime server
(哎呀!信誉不够,第二个样本很容易找到,称为“异步TCP日间服务器”)