ASIO 网络相关部分类关系:
最上层的类basic_io_object提供了对各平台异步io框架的封装(win_iocp, linux_reactive_epoll),屏蔽了平台上的细节对外部暴露了两个重要接口:
1.get_service用于获取平台的服务(iocp,reactive的支持)
2.get_implementation操作资源的集合(socket句柄,本地地址,远程地址,协议类型等)
继承自他的所有类,都是通过这两个接口来调用本地服务的。
basic_socket中间层的作用,实际上是抽象了stream_socket(TCP),datagram_socket(UDP),raw_socket(IP)的共同接口部分:
open,assign,bind,connect,shutdown,close等等。这一层完全是为了封装共同接口。
第三层具体协议实现层:
basic_stream_socket实现了TCP协议的特有接口
basic_datagram_socket实现了UDP协议的特有接口
basic_raw_socket实现了IP协议的接口(ICMP等等)