boost_asio

asio前摄器模式(Proactor)
  1.封装select,poll/epoll,kqueue,overlapped i/o机制
  2.实现异步io模型
  3.异步模式下,程序发起io请求,同时定义一个用于回调的完成处理函数,像io_service提交请求
  4.io_service同样把io操作转交给操作系统执行,但它不同步等待,而是立即返回
  5.程序调用io_service的run成员函数等待异步操作完成
  6.异步操作完成时io_service从操作系统获取执行结果,调用完成处理函数
  7.asio使用自己定义的线程概念strand
  8.asio使用的缓冲区由mutable_buffer和const_buffer封装
  9.asio使用system库的error_code和system_error表示程序运行的错误

deadline_timer定时器
  1.有两种形式的构造函数,第一个参数为io_service对象,第二个参数是定时器终止时间
  2.定时器一旦创建,它立即开始计时,可以使用成员函数wait()来同步等待定时终止,或使用async_wait异步等待,定时器终止会调用handler函数wait
  3.创建定时器时不指定终止时间,那定时器不会工作,可以用expires_at()和expires_from_now()分别设置定时器终止的绝对时间和相对时间,然后再调用wait()和async_wait()等待异
  4.wait()和async_wiat()使用它们无参重载形式,可以获得定时器终止时间
  5.cancel()函数,功能是通知所有异步操作取消,转而等待定时器终止

asio库类
  1.ip::tcp类定义数个用于tcp通信的typedef类型,包括endpoint,socket,iostream,acceptor,resolver等
  2.ip::address来表示ip地址,address::from_string()从字符串产生ip地址,address::to_string()把ip地址转换为字符串
  3.socket处理
     a) 成员函数connect()可以连接到指定的通信端点
     b) 连接成功后loacl_endpoint()和romote_endpoint()获得连接两端的端点信息
     c)用read_some()和write_some()阻塞读写数据
     d) 操作完成后用close()函数关闭socket
     e) acceptor类用户服务端,在指定端口接受连接
     f) resolver类用户客户端解析网址获得可用的ip地址
     g) 异步socket处理流程与同步程序基本相同,将原有的同步调用函数换成前缀是async_的异步调用函数,并增加回调函数,在回调函数中再启动一个异步调用
  4.udp协议
     a) 不需建立连接,使用receive_from和send_to就可以直接通过端点发送数据
  5.asio提供ip::tcp::iostream类可以像标准流一样操作,内部集成resolver的域名解析功能和acceptor接受连接功能

posted on 2012-10-16 12:17  kangbry  阅读(241)  评论(0编辑  收藏  举报

导航