HP-socket深度体会agent组件跟Client组件联系与区别

本文详细解读了HP-Socket中的Agent和Client组件,强调了Agent组件作为Multi-Client组件的特性,能够处理大规模Socket连接,而Client组件适合小规模场景。在连接管理上,Agent组件可在OnClose事件中直接发起重连,而Client组件需新开线程处理。同时,文章指出了在不同组件中启动和停止方法的使用注意事项,以避免死锁问题。
摘要由CSDN通过智能技术生成

HP-socket深度体会)

解读Hp-socket 、agent组件跟Client组件联系与区别:

➢ Agent组件Agent组件实质上是Multi-Client组件与Server组件采用相同的技
术架构。一个Agent组件对象可同时建立和高效处理大规模Socket连接。
➢ Client组件基于Event Select / POLL通信模型每个组件对象创建一个通信线程
并管理一个Socket连接适用于小规模客户端场景。
✓ Agent组件本质上是Client组件一个Agent对象能同时管理多个客户端连接
✓ 根据实际使用场景HP-Socket中只实现了基于TCP和HTTP Agent组件

  • IClient建立连接方法:
    如果Start()方法返回失败可以调用组件的GetLastError() 和GetLastErrorDesc() 方法获取错误代码和错误描述。如果Start()方法返回成功可以调用组件的GetConnectionID() 方法获取当前连接的Connection ID。
  • IAgent建立连接方法
    Start() 方法启动IAgent组件并指定连接方式,如果Start() 方法返回失败可以调用组件的GetLastError() 和
    GetLastErrorDesc() 方法获取错误代码和错误描述。注意Start() 方法在整个通信周期中只
    需调用1次。 Connect() 方法与指定服务器建立连接。
  • 由于监听器事件OnReceive / OnClose等通常都在通信线程中被触
    发Stop() 方法需要等待通信线程结束这样会导致自己等等自己结束的死循环

因此不能在监听器事件处理代码中调用Start() / Stop() 控制方法。
agent组件可以在接收到断线通知事件OnClose时立刻发起Connect()(内部已经处理了线程安全) 调用
进行重连Client组件则不能接收到断线通知事件OnClose时立刻调用Start() 方
法进行重连。(PS:因为strat或者stop重新发起要等上一个线程停止)因此Client组件可以在新开一个线程来处理断线重连的问题。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值