|
本帖最后由 cpponly2008 于 2010-8-19 15:12 编辑
1、同时注册读和写
if (mReactor->register_handler(reader,
ACE_Event_Handler::READ_MASK | ACE_Event_Handler::WRITE_MASK) == -1)
2、class ReadHandler : public ACE_Event_Handler
3、重载以下两个函数:
virtual int ReadHandler ::handle_input(ACE_HANDLE = ACE_INVALID_HANDLE);
virtual int ReadHandler ::handle_output (ACE_HANDLE fd = ACE_INVALID_HANDLE);
4、客户端既调用send_n,也调用recv_n
出现的问题:
服务端的ReadHandler发送数据的时候会调用handle_output ,但始终不调用handle_input,即不接收客户端send_n发送的数据;
如果Reactor只注册读事件,if (mReactor->register_handler(reader,
ACE_Event_Handler::READ_MASK) == -1)
这时,服务端的ReadHandler调用handle_input,可以正常接收客户端send_n发送的数据。
如何才能服务端同时支持两种事件? |
|