在Receiver::handle_read_dgram函數的最後,增加下面的代碼:
ACE_Message_Block* msg = new ACE_Message_Block (1024);
// create a message block to read the message body
ACE_Message_Block* body =new ACE_Message_Block (1024);
msg->cont (body);
// ok lets do the asynch
read
size_t number_of_bytes_recvd = 1024;
int
res = rd_.recv (msg,
number_of_bytes_recvd,
0,
PF_INET,
this->act_);
也就是增加rd_.recv的調用,繼續數據的接受,同時也不用擔心這裏的new沒有顯式的delete,因爲
result.message_block
()->release ()已經將那塊內存區域釋放了;事實上測試數據表明,也沒有明顯的
內存泄露