zoukankan      html  css  js  c++  java
  • 接收连接basic_socket_acceptor

    概述

    TCP有一处和UDP不同的地方是TCP是面向连接的,TCP有建立连接、通信、关闭连接的操作,Boost.Asio提供了ip::tcp::acceptor用来接收新的TCP连接,底层由socket_acceptor_service提供连接服务, basic_socket_acceptor作为连接接收类模板,当由acceptor获取到远程连接socket后,即可使用socket进行后续通信操作。

    操作步骤

    1. 使用io_service构造acceptor
    2. 打开acceptor
    3. 设置选项[可选]
    4. 绑定监听端口
    5. 开始监听
    6. 同步/异步接收连接
    7. 关闭

    操作说明

    basic_socket_acceptor针对每个步骤都提供了相应的方法,同时也提供了一些构造函数可以直接合并几个步骤的操作;

    方法名说明
    open 打开acceptor
    is_open 是否已打开
    bind 绑定到指定端口,端口应该为本地端口
    listen 监听指定端口
    close 关闭acceptor,任何异步accept会被立即取消,再次使用必须再调用open
    cancel 取消acceptor上的异步操作,会引起异步连接、发送、接收操作的立即完成,错误码为error::operation_aborted
    set_option 设置选项
    get_option 获取选项
    accept 同步连接获取
    async_accept 异步连接获取

    使用方法

    通常情况下,如果在构造时指定要绑定的本地端口,即可直接进行accept操作,譬如:

    tcp::accptor acceptor(io_service,endpoint,reuse_addr);
    
    acceptor.accept(socket,ec);

    如果构造时没有提供本地端口,则需要进行打开、绑定、监听等动作之后才可以进行accept操作,譬如:

    tcp::acceptor acceptor(io_service);
    acceptor.open(endpoint.protocol());
    if (reuse_addr)
       acceptor.set_option(socket_base::reuse_address(true));
    acceptor.bind(endpoint);
    acceptor.listen(listen_backlog);
    
    acceptor.accept(socket,ec);

     转自:https://www.jianshu.com/p/ff55ca69b943

     
  • 相关阅读:
    弱省胡策 Magic
    CF917D Stranger Trees
    【弱省胡策】Round #5 Count
    【BZOJ2117】 [2010国家集训队]Crash的旅游计划
    「2017 山东一轮集训 Day5」苹果树
    【SDOI2017】天才黑客
    【JXOI2018】守卫
    小程序两种图片加载方式
    小程序之底部栏设计
    小程序之全局变量的设置及使用
  • 原文地址:https://www.cnblogs.com/fnlingnzb-learner/p/10412436.html
Copyright © 2011-2022 走看看