使用Reactor框架时handle_input遇到的问题
在学习马维达翻译的中篇《ACE程序员教程》中第6章Reactor时,按照上面写了MyAcceptHandler和MyInputHandlerint MyInputHandler::handle_input(ACE_HANDLE fd)
{
ACE_DEBUG((LM_DEBUG, "Receive message"));
peer_.recv_n(buffer, BUFFERSIZE);
ACE_DEBUG((LM_DEBUG, "%s\n", buffer));
buffer = '\0';
//keep register with reactor
return 0;
}
结果在客户端调用
stream.send_n(msg1, 6);
stream.close();
最后int MyInputHandler::handle_input(ACE_HANDLE fd)会调用两次,但是第二次什么也收不到
在客户端这样调用
stream.send_n(msg1, 6);
stream.send_n(msg2, 6);
stream.close();结果和上面的情况一样,只能收到msg1, msg2收不到,但是handle_input也会调用两次,而第二次什么也收不到。 stream.close();你的调用,导致handle_input返回了。去掉这个调用试试。 第二次调用会返回0,表示对方关闭了此socket
页:
[1]