2012-09-23 39 views
3

我有一小段代碼插座設置選項的解釋

boost::asio::ip::tcp::no_delay option(true); 
boost::asio::ip::tcp::socket* sock = new boost::asio::ip::tcp::socket(ios); 
sock->set_option(option); 
_session_acceptor.async_accept(*sock, 
       boost::bind(&server::playerAccept, this, sock, boost::asio::placeholders::error)); 

如果我接受服務器之前套接字調用set_option不接受任何連接。但是如果我在連接被接受後撥打set_option。有沒有魔法?

+0

'_session_acceptor'應該重命名。前綴下劃線被保留供圖書館wrtiers使用。 – mark

+1

@ mark:不,他們不是。 '__this'和'_This'是保留的。 – Xeo

回答

4

您應該在acceptor上調用set_option,而不是socket。示例來自我的項目:

Listener::Listener(int port) 
      : acceptor(io, ip::tcp::endpoint(ip::tcp::v4(), port)) 
      , socket(io) { 
    boost::asio::ip::tcp::no_delay opt_nodelay(true); 
    acceptor.set_option(opt_nodelay); 
    start_accept(); 
+0

謝謝你幫了我很多 –