C++ boost.asio';s插座';s的接收/发送功能不好?

C++ boost.asio';s插座';s的接收/发送功能不好?,c++,boost,boost-asio,C++,Boost,Boost Asio,数据可以从数据库中读取或写入 已使用连接的TCP套接字 接收()、异步接收()、发送()或 async_send()成员函数。 然而,由于这些可能导致 短写或短读,应用程序 通常将使用以下命令 改为操作:read(), 异步_read()、write()和 异步写入() 我真的不明白read()、async_read()、write()和async_write()这样的注释也可能以短写或短读结束,对吗? 为什么这些功能不一样? 我应该使用它们吗? 有人能帮我澄清一下这句话吗?读、异步读、写和异步

数据可以从数据库中读取或写入 已使用连接的TCP套接字 接收()、异步接收()、发送()或 async_send()成员函数。 然而,由于这些可能导致 短写或短读,应用程序 通常将使用以下命令 改为操作:read(), 异步_read()、write()和 异步写入()

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

读、异步读、写和异步写是由函数组成的,它们多次调用类函数,直到传输请求的字节数为止。为了方便起见,图书馆把它们包括在内。否则,每个开发人员都需要实现相同的逻辑

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


在大多数情况下,您应该使用自由(组合)函数来传输数据。

首先,您必须理解“异步”一词,它的简单意思是“无需等待”。 调用异步操作后,将执行以下操作,而不等待异步操作返回。而同步必须等待,直到以前的同步操作返回。 Boost.Asio提供的以下两个示例是有意义的:


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

这与我的问题有什么关系?对不起。。。。我猜你问题的第一段是引用。。。所以我把它们放进去了…为什么它是这样设计的?在这种情况下,您不需要接收请求的所有字节?为什么套接字对象不包括读/写/异步读/异步写?无论如何,您正在传递一个套接字。我不知道为什么,但您可能可以在“TR2的网络库提案”中找到答案。关于先前链接的文档,请参阅第8页。