boost::asio::ip::tcp::socket学习笔记

 

先上一个socket相关的UML类图

 

 

从上面的socket相关UML类图可以看到在其父类basic_io_object<IoObjectService>中关联了一个stream_socket_service成员变量;

(在此处这所以标红是因为这个类型是一个模板类型 <IoObjectService>在tcp::socket情景下的展开类型,如果是deadline_timer的话这个IoObjectService就会是deadline_timer_service.)

下面是stream_socket相关的简要类图

 

 

从上面的类图我们可以看出真正的async_xxx操作是在reactive_socket_service_bask中执行的,这个reactive_socket_service_base才是tcp::socket执行的关键;

在reactive_socket_service_base中定义了一个base_implementation_type类型,下面我们看看这个类型的具体信息:

 1 // The implementation type of the socket.
 2   struct base_implementation_type
 3   {
 4     // The native socket representation.
 5     socket_type socket_;
 6 
 7     // The current state of the socket.
 8     socket_ops::state_type state_;
 9 
10     // Per-descriptor data used by the reactor.
11     reactor::per_descriptor_data reactor_data_;
12   };

有一个socketfd文件描述符socket_,和一个reactor_data_,这里面的这个reactor_data_也是一个非常关键性

 

posted @ 2018-09-14 18:13  郭流水  阅读(1110)  评论(0编辑  收藏  举报