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组件可以在新开一个线程来处理断线重连的问题。