peakzhang 发表于 2008-1-6 16:46:42

使用Reactor框架时handle_input遇到的问题

在学习马维达翻译的中篇《ACE程序员教程》中第6章Reactor时,按照上面写了MyAcceptHandler和MyInputHandler

int 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也会调用两次,而第二次什么也收不到。

peakzhang 发表于 2008-1-6 16:46:53

stream.close();你的调用,导致handle_input返回了。去掉这个调用试试。

peakzhang 发表于 2008-1-6 16:47:01

第二次调用会返回0,表示对方关闭了此socket
页: [1]
查看完整版本: 使用Reactor框架时handle_input遇到的问题