2013-04-05 61 views
0

我試着用下面的代碼來讀取套接字(服務器端)的可用字節數,變量packet_bytes沒有做任何事情。我期待數據包使用的字節數被讀入packet_bytes,但這似乎不起作用。C++:BOOST-ASIO async_read_some不返回數據包字節數?

std::size_t packet_bytes = 0; 

socket_.async_read_some(boost::asio::buffer(data_, max_length), 
      boost::bind(&session::handle_read, this, 
      boost::asio::placeholders::error, 
      packet_bytes)); 

我也試過std::size_t packet_bytes = socket_.available();,那也沒有返回任何東西。這是entire code

回答

3

packet_bytes參數在bind電話也應該是一個佔位符:

socket_.async_read_some(boost::asio::buffer(data_, max_length), 
    boost::bind(&session::handle_read, this, 
       boost::asio::placeholders::error, 
       boost::asio::placeholders::bytes_transferred)); 

然後在你的處理函數這樣的說法將被讀取的字節數。

參見例如manual中的示例。

+0

是不是用於獲取套接字中的字節的參數? – pandoragami 2013-04-05 08:24:58

+0

雖然我如何創建處理函數? – pandoragami 2013-04-05 08:27:10

+0

@lost_with_coding好的,重讀你的問題之後,似乎你想知道_can_可以被讀取的字節數,即接收緩衝區中的字節數,而不是你剛收到的字節數。那是對的嗎? – 2013-04-05 08:27:57