【20】Asio官方文档 PDF 电子书

[复制链接]

该用户从未签到

759

主题

763

帖子

4660

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
4660
跳转到指定楼层
楼主
发表于 2017-12-28 14:53:41 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

想要查看内容赶紧注册登陆吧!

您需要 登录 才可以下载或查看,没有帐号?立即注册

x

基本Asio解剖Asio在I/O对象例如sockets上完成操作,即可是同步操作也可是异步操作。在开始使用Asio以前,了解Asio多个部分,你的程序,以及他们怎么一起工作的的概念图非常有用的。
我们考虑当你在一个socket上执行一个连接操作时都发生了些什么作为一个引导的例子。我们可以通过考察同步操作开始。

Your program(你的程序)会至少有一个io_service对象。io_service表示your program(你的程序)到operating system(操作系统)的I/O服务的纽带。
asio::io_service io_service;
要执行一个I/O操作,your program(你的程序)需要一个I/O对象如一个TCP socket:
asio::ip::tcp::socket socket(io_service);
当一个同步连接操作执行时,下面是事件序列发生:
1.Your program(你的程序)通过调用I/O对象初始化连接操作:
socket.connect(server_endpoint);
2.I/O对象转发请求给io_service
3.io_service调用operating system(操作系统)执行连接操作。
4.operating system(操作系统)返回操作的结果给io_service
5.io_service会将操作的任何错误解释成为一个asio::error_code对象。error_code(错误码)可能被与特定值比较,也可能作为一个布尔值被测试(false意味着没有错误发生)。然后结果返回给I/O对象
6.如果失败I/O对象抛出asio::system_error类型的异常。如果初始化代码像下面这样写:
asio::error_code ec;
socket.connect(server_endpoint, ec);
那么操作的结果会被设置到error_code变量ec,没有异常会被抛出。
当使用异步操作时,不同的事件序列发生。

1.Your program(你的程序)通过调用I/O对象初始化连接:
socket.async_connect(server_endpoint, your_completion_handler);
这里your_completion_handler是一个函数或函数对象有如下的签名:
void your_completion_handler(const asio::error_code& ec);
需要的准确的签名根据执行的异步操作不同而不同。参考手册表明了每种操作相应的格式。
2.I/O对象转发请求给io_service
3.io_serviceoperating system(操作系统)发信号,告诉它应该开始一个异步连接。
时间流逝。(在同步的情形中这里会等待整个连接操作的时间。)

4.operating system(操作系统)把结果放置在准备被io_service对象拾取的队列中表明连接操作已经完成。
5.Your program(你的程序)必须调用io_service::run()(或者一个类似的io_service成员方法)来获取结果。当有未完成的异步操作时,调用io_service::run()会阻塞,所以你通常尽快调用它一旦开始了第一个异步操作。
6.在io_service::run()内部,io_service将运行结果出列,把它翻译为一个error_code,然后把它传给your completion handler。这只是Asio怎样运行的简化图。如果你的需求更高级,你可能想要深入文档,例如扩展Asio来执行其他异步操作。



下载地址(回复可见):
游客,如果您要查看本帖隐藏内容请回复




分享到:  QQ好友和群QQ好友和群
收藏收藏
回复

使用道具 举报

该用户从未签到

0

主题

47

帖子

47

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
47
沙发
发表于 2019-9-15 12:38:26 | 只看该作者
Boost程序库开发的94个秘笈 P
回复 支持 反对

使用道具 举报

该用户从未签到

0

主题

63

帖子

63

积分

邀请会员

积分
63
板凳
发表于 2020-11-16 23:29:20 | 只看该作者
好书,谢谢分享
回复 支持 反对

使用道具 举报

  • TA的每日心情
    开心
    2022-8-2 19:01
  • 签到天数: 1 天

    [LV.1]初来乍到

    1

    主题

    24

    帖子

    29

    积分

    新手上路

    Rank: 1

    积分
    29
    地板
    发表于 2021-11-10 15:34:48 | 只看该作者
    6666666666
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    0

    主题

    26

    帖子

    26

    积分

    内核VIP会员

    Rank: 3Rank: 3

    积分
    26
    5#
    发表于 2022-8-23 11:04:31 | 只看该作者
    3rog
    回复

    使用道具 举报

    该用户从未签到

    0

    主题

    175

    帖子

    175

    积分

    邀请会员

    积分
    175
    6#
    发表于 2023-1-23 01:55:16 | 只看该作者
    Boost程序库开发的94个秘笈 PBoost程序库开发的94个秘笈 P
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    0

    主题

    77

    帖子

    77

    积分

    游戏VIP会员

    Rank: 3Rank: 3

    积分
    77
    7#
    发表于 2023-4-22 10:15:33 | 只看该作者
    6666666666
    回复 支持 反对

    使用道具 举报

    快速回复高级模式
    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    快速回复 返回顶部 返回列表