servernet网络出错问题总结

在外网上运行平台,通信模块经常会出现网络错误110,一直触发accept事件,accept时阻塞5秒,影响数据的收发。

通过打日志发现, CTCPSessionMgr2::handle_input(ACE_HANDLE fd)过来的fd,已经不是注册时的fd了

CTCPSessionMgr2::Connect时会向

m_pReactor->register_handler(m_listener.get_handle(), this, ACE_Event_Handler::ACCEPT_MASK);

查找原因:

是因为开始启动时,commonserver会Connect监听一个端口,调用了注册accept事件,然后集控模块监听客户端时,没有生成新的管理对象,也调用了Connect监听另一个端口,注册了accept事件。

当有客户端连接第一个端口,会触发这个对象的accept事件,然后在后一个端口进行accept,当然会超时失败。返回0,因为第一个端口的事件没有处理完,一直会触发。

 

修改:

1、监听时new一个对象,使用不同的对象进行accept

2、accept时如果fd不是自己返回-1,不再处理这个非法fd的事件

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值