tangzs
驱动牛犊
驱动牛犊
  • 注册日期2004-01-15
  • 最后登录2005-08-19
  • 粉丝0
  • 关注0
  • 积分6分
  • 威望2点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:1190回复:5

保存所有收到的包后,组包时如何准确地排除掉重复的包?

楼主#
更多 发布于:2004-07-12 10:44
我正在做一个用POP3接收邮件的模块,在和服务器建立连接和发送收信指令后,
服务器将邮件分包发送过来,程序负责对所有的包进行组包以还原整封邮件,
当邮件很小或网络很畅通时邮件完整无缺,当接收大邮件(几M)时则邮件会被
损坏,比较明显的现象是有邮件附件是BMP位图时,预览位图可以看到位图已被
损坏,用UltraEdit比较 正常的位图和被损坏的位图,发现被损坏的位图比正
常的位图一些数据块,证明不是网络丢包而是收到了重复的包,哪么如何准确地
排除掉重复的包呢?

我已经做了如下操作,有一定效果,但在网络比较忙时组包后还是有一些重复的包:

1、保存每个包的序列号,当下个包来时如果序列号已存在则丢弃该包
2、保存每个包的(序列号+长度)的一个数值,如果下个包的序列号在这个区间则丢弃该包
3、对所有的包排序,以序列号升序排列


请教各位高手!
tangzs
驱动牛犊
驱动牛犊
  • 注册日期2004-01-15
  • 最后登录2005-08-19
  • 粉丝0
  • 关注0
  • 积分6分
  • 威望2点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2004-07-14 18:40
来人呀
tangzs
驱动牛犊
驱动牛犊
  • 注册日期2004-01-15
  • 最后登录2005-08-19
  • 粉丝0
  • 关注0
  • 积分6分
  • 威望2点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2004-07-13 17:31
自已UP一下
tangzs
驱动牛犊
驱动牛犊
  • 注册日期2004-01-15
  • 最后登录2005-08-19
  • 粉丝0
  • 关注0
  • 积分6分
  • 威望2点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地板#
发布于:2004-07-13 10:34
应该不是程序有BUG问题,而是不知道怎么排除掉重复的包
wigner178
驱动牛犊
驱动牛犊
  • 注册日期2003-09-15
  • 最后登录2004-10-15
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2004-07-12 16:27
怀疑是你的程序中存在bug,导致数据被重复。
tangzs
驱动牛犊
驱动牛犊
  • 注册日期2004-01-15
  • 最后登录2005-08-19
  • 粉丝0
  • 关注0
  • 积分6分
  • 威望2点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2004-07-12 16:12
自已UP
游客

返回顶部