【问题标题】:How boost::asio::ip::tcp::acceptor work with TCP_DEFER_ACCEPT and TCP_FASTOPENboost::asio::ip::tcp::acceptor 如何与 TCP_DEFER_ACCEPT 和 TCP_FASTOPEN 一起工作
【发布时间】:2017-06-01 09:30:17
【问题描述】:

boost::asio::ip::tcp::acceptor 如何与 TCP_DEFER_ACCEPT 和 TCP_FASTOPEN 一起工作,

当我使用纯 C 时,我可以设置一些参数,如 TCP_DEFER_ACCEPT 和 TCP_FASTOPEN,以提高 tcp/ip 性能,如下所示: setsockopt(serverSock, IPPROTO_TCP, TCP_DEFER_ACCEPT, &soValue, sizeof(soValue)); setsockopt(serverSock, SOL_TCP, TCP_FASTOPEN, &qlen, sizeof(qlen)); 但是当我使用boost::asio时,我找不到设置TCP_DEFER_ACCEPT和TCP_FASTOPEN的方法,谁能告诉我怎么解决?谢谢。

【问题讨论】:

    标签: c++ boost tcp boost-asio


    【解决方案1】:

    我明白了。使用 boost::asio::ip::tcp::acceptor::native_handle()。

    示例:

    std::shared_ptr<boost::asio::ip::tcp::acceptor>   sp_acceptor( std::make_shared<boost::asio::ip::tcp::acceptor>( d_ios_last0 ) );
    sp_acceptor->open( server_endpoint.protocol() );
    sp_acceptor->set_option( boost::asio::ip::tcp::acceptor::reuse_address( true  ) );
    if( bool_tcp_defer_accept )  {
      int soValue = 1;
      if( 0 == setsockopt( sp_acceptor->native_handle(), IPPROTO_TCP, TCP_DEFER_ACCEPT, &soValue, sizeof(soValue)) )  {
        log_message( "TCP_DEFER_ACCEPT set success." );
        }
      else  {
        warn_message( "TCP_DEFER_ACCEPT set failed." );
        }
      }
    sp_acceptor->bind( server_endpoint );
    if( bool_tcp_fastopen )  {
      int qlen=5;
      if( 0==setsockopt( sp_acceptor->native_handle(), SOL_TCP, TCP_FASTOPEN, &qlen, sizeof(qlen)) ) {
        log_message( "TCP_FASTOPEN set success." );
        }
      else  {
        warn_message( "TCP_FASTOPEN set failed." );
        }
      }
    sp_acceptor->listen( 8192 );
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-05-22
      • 2018-06-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-12-25
      相关资源
      最近更新 更多