|
我用reactor框架实现了一个接收器,被动监听连接,在window下工作很好,相同的代码在linux下就不能工作了。本来有客户端连进来应该回调handle_input的,可是没有被回调,不知道为什么。代码段见下边。
//这是注册接受事件
ACE_INET_Addr listenAddr(m_nPort);
if(m_Acceptor.open(listenAddr, 1) == -1)
{
ACE_DEBUG((LM_ERROR, _T("m_Acceptor.open(listenAddr, 1) == -1\n")));
return -1;
}
return ( (ACE_Reactor::instance())->register_handler(this, ACE_Event_Handler::ACCEPT_MASK) );
//这段是handle_input
int CReactiveAcceptor::handle_input(ACE_HANDLE fd)
{
//创建一个空消息,唤醒线程接受连接
ACE_Message_Block *pMsg = new ACE_Message_Block(0, ACE_Message_Block::MB_DATA);
putq(pMsg);
return 0;
} |
|