• 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_也是一个非常关键性

  • 相关阅读:
    CSRF跨站请求伪造
    FineReport 导出汉字乱码
    Java 程序中中文没有乱码,存入数据库后中文乱码问题
    分析函数
    Redis的持久化与主从复制
    分布式Redis的使用
    redis的介绍和安装
    Solr后台管理及SolrJ的使用
    Solr总结
    bootstrap 点击回到顶部 超简单
  • 原文地址:https://www.cnblogs.com/guoliushui/p/9648193.html
Copyright © 2020-2023  润新知