请问HP-Socket 新增的 PULL 模型在实际应用中有什么好处?

ssxgs ssxgs 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
  HP-Socket v2.2 中新增了PULL模型支持,想请教下各位大虾:在实际应用中如何使用PULL模型,作者说PULL模型比PUSH模型简单,但看提供的Demo仿佛代码量更多了,到底简单在哪里?以下摘录PULL模型介绍:

PUSH / PULL 模型简介:
  通信组件向上层应用提交数据有以下两种模式:
  PUSH 模型:当通信组件接收到数据后调用应用接口的 OnReceive(dwConnID, const BYTE* pData, int iLength) 方法向应用程序推送数据,应用程序实现该方法并在方法内部取得 pData 进行处理。
  PULL 模型:当通信组件接收到数据后调用应用接口的 OnReceive(dwConnID, int iTotalLength) 方法(注意,不包含 pData 参数)通知应用程序有 iLength 长度的数据可取,如果应用程序认为该长度的数据能组成一个完整的数据包则调用通信组件的 Fetch(BYTE* pData, int iDataLength) 方法抓取 iDataLength 长度的数据(iDataLength <= iTotalLength)。

  其中 PUSH 模型效率相对较高,但应用程序本身要负责处理解包和粘包等问题,带来一定的复杂性;PULL 模型则相对简单,只要上层协议定义得足够严谨(PULL 模型的数据包通常划分为 Header 数据包和 Body 数据包),能大大简化数据包处理工作,但由于组件中间加了一个间接层,效率往往低于 PUSH模型。


  
...全文

相关推荐

评论 8
收藏 已收藏
分享
返回顶部
ssxgs
网络编程 18,356 成员 64,161 内容