19、boost asio 教程---里程碑 1

正如您可能已经注意到的,到目前为止,我们所看到的大多数示例都涉及TCP领域。这是因为大多数服务、应用程序和应用层协议都是构建在TCP之上的。这在某种程度上是默认选择。如果您不知道需要哪种协议,那就选择TCP。

UDP有点棘手,适用UDP更好的领域非常有限。在您提高网络技能之后,我们将稍后更详细地研究UDP的特性以及如何使用Boost.Asio处理UDP。与此同时,我们将继续学习如何处理TCP。

哦,还有ICMP!这家伙甚至比UDP更稀少。总有一天我们也会遇到它。但现在,让我们回到TCP。

因此,在本课中,我们将简要回顾到目前为止学到的所有内容。

基础知识
- 一切都始于并围绕着boost::asio::io_context类实例展开。所有I/O操作都由某个io_context处理。提供I/O功能的所有类在构造时都与某个io_context绑定,不能在其生命周期内重新绑定到另一个io_context上。首先,您创建至少一个io_context类实例。接下来,您在其之上执行其他操作。

- 要通过网络传输数据,您需要一个套接字。套接字类似于文件句柄,但是套接字上的操作更受限制,这些限制取决于您正在处理的网络协议:TCP、UDP或ICMP。

- TCP连接类似于双向顺序数据流。它可以打开并准备好操作,也可以关闭。您可以向其写入数据并从中读取数据(如果需要,可以同时进行)。除非发生错误,否则保证所有数据都会被传送,而且按照发送顺序传送。与处理文件不同,您不能在TCP流中定位读取或写入指针。

- 不存在UDP连接或ICMP连接这样的概念。处理UDP或ICMP时,您发送和接收单独的数据块(或“数据报”)。不能保证数据报将被传递,因此必须自行维护数据传递。

猜你喜欢

转载自blog.csdn.net/Knowledgebase/article/details/133013035
今日推荐