首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >boost::asio::ip::tcp::acceptor如何使用TCP_DEFER_ACCEPT和TCP_FASTOPEN

boost::asio::ip::tcp::acceptor如何使用TCP_DEFER_ACCEPT和TCP_FASTOPEN
EN

Stack Overflow用户
提问于 2017-06-01 17:30:17
回答 1查看 351关注 0票数 1

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,谁能告诉我怎么解决呢?谢谢。

EN

回答 1

Stack Overflow用户

发布于 2017-06-01 20:58:00

这样啊,原来是这么回事。使用boost::asio::ip::tcp::acceptor::native_handle().

示例:

代码语言:javascript
复制
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 );
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44303738

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档