boost.asio socket接收/发送功能不好?

时间:2010-05-18 22:12:26

标签: c++ boost boost-asio

  

可以读取或写入数据   连接TCP套接字使用   receive(),async_receive(),send()或   async_send()成员函数。   但是,因为这些可能导致   短写或读,一个应用程序   通常会使用以下内容   操作代替:read(),   async_read(),write()和   ASYNC_WRITE()。

我真的不明白那句话是read(),async_read(),write()和async_write()也可能以短写或读取结束,对吧?
为什么这些功能不一样?
我应该使用它们吗? 有人可以为我澄清这句话吗?

2 个答案:

答案 0 :(得分:6)

读取 async_read 写入 async_write 组合功能多次调用类函数,直到发送所请求的字节数。为方便起见,图书馆将其包含在内。否则,每个开发人员都需要实现相同的逻辑。

类函数直接包装底层的OS函数,这基本上在文档中说明:这些函数可能在所有字节传输之前返回。

在大多数情况下,您应该使用免费(合成)功能来传输数据。

答案 1 :(得分:-1)

首先,你必须理解“异步”这个词,它只是意味着“不必等待”。 调用异步操作后,以下操作将执行而不等待异步操作返回。同步必须等待,直到先前的同步操作返回。 来自Boost.Asio的以下两个样本将有意义: A synchronous TCP daytime server

(哎呀!信誉不够,第二个样本很容易找到,称为“异步TCP日间服务器”)