2017-06-01 3 views
1

とのTCP ::アクセプターの仕事をどのように向上:: ASIO :: IP :: TCP_DEFER_ACCEPTとTCP_FASTOPENとのTCP ::アクセプターの仕事、高める方法:: ASIO :: IP :: 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を設定する方法を見つけることができません。どのように解決するのか教えてください。ありがとうございました。

答えて

0

私はそれを得ました。 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); 
関連する問題