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

本文档介绍了Boost.Asio库在网络编程中的应用,主要关注TCP协议。内容涵盖io_context的作用,TCP连接的特点,同步与异步操作的区别,客户端和服务器应用程序的设计,以及多线程环境下的错误处理策略。强调了在实际开发中使用异步操作的必要性,并提供了关于如何处理TCP连接、启动客户端连接和服务器接受连接的指导。

正如您可能已经注意到的,到目前为止,我们所看到的大多数示例都涉及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时,您发送和接收单独的数据块(或“数据报”)。不能保证数据报将被传递,因此必须自行维护数据传递。也不能保证

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Knowledgebase

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值