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

ssxgs 2013-07-22 06:06:00
  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模型。


  
...全文
800 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
dongyingli 2015-03-05
  • 打赏
  • 举报
回复
正好学习使用hp-socket,3u
HaoYuan 2014-03-29
  • 打赏
  • 举报
回复
mark
啥都得学呀 2013-11-09
  • 打赏
  • 举报
回复
可以这样理解:  PUSH 模型:此模型下,服务器把收到的数据直接交给用户处理。如果用户发了一个包,包长度是1000,那么服务器可能在接收到500的时候,就发给用户处理了,也可能收到了1500的时候发给用户。当然也可能正好把一个完整的包发给客户。用户的操作就比较麻烦,要判断包的完整。 PUSH 模型:此模型下,只要用户把协议写好,包头和包体没有问题,那么,此模型下,只要收到的数据足够那个包的长度,那就是一次完美的“握手”。 我个人的理解而已。不代表作者的真实表达意思!
ssxgs 2013-07-25
  • 打赏
  • 举报
回复
没人研究过吗?!?!!??!
DuMiYue 2013-07-24
  • 打赏
  • 举报
回复
继续等待~~~~~~~~~~~~
ssxgs 2013-07-23
  • 打赏
  • 举报
回复
没人能解析一下么~?~?~
davidyu720 2013-07-23
  • 打赏
  • 举报
回复
MARK, 学习。。。
  • 打赏
  • 举报
回复

18,356

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 网络编程
c++c语言开发语言 技术论坛(原bbs)
社区管理员
  • 网络编程
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧