我正在做一个用POP3接收邮件的模块,在和服务器建立连接和发送收信指令后,
服务器将邮件分包发送过来,程序负责对所有的包进行组包以还原整封邮件,
当邮件很小或网络很畅通时邮件完整无缺,当接收大邮件(几M)时则邮件会被
损坏,比较明显的现象是有邮件附件是BMP位图时,预览位图可以看到位图已被
损坏,用UltraEdit比较 正常的位图和被损坏的位图,发现被损坏的位图比正
常的位图多了一些数据块,证明不是网络丢包而是收到了重复的包,哪么如何准确地
排除掉重复的包呢?我已经做了如下操作,有一定效果,但在网络比较忙时组包后还是有一些重复的包:1、保存每个包的序列号,当下个包来时如果序列号已存在则丢弃该包
2、保存每个包的(序列号+长度)的一个数值,如果下个包的序列号在这个区间则丢弃该包
3、对所有的包排序,以序列号升序排列
请教各位高手!另一帖在 http://community.csdn.net/Expert/topic/3166/3166113.xml?temp=4.340762E-02
服务器将邮件分包发送过来,程序负责对所有的包进行组包以还原整封邮件,
当邮件很小或网络很畅通时邮件完整无缺,当接收大邮件(几M)时则邮件会被
损坏,比较明显的现象是有邮件附件是BMP位图时,预览位图可以看到位图已被
损坏,用UltraEdit比较 正常的位图和被损坏的位图,发现被损坏的位图比正
常的位图多了一些数据块,证明不是网络丢包而是收到了重复的包,哪么如何准确地
排除掉重复的包呢?我已经做了如下操作,有一定效果,但在网络比较忙时组包后还是有一些重复的包:1、保存每个包的序列号,当下个包来时如果序列号已存在则丢弃该包
2、保存每个包的(序列号+长度)的一个数值,如果下个包的序列号在这个区间则丢弃该包
3、对所有的包排序,以序列号升序排列
请教各位高手!另一帖在 http://community.csdn.net/Expert/topic/3166/3166113.xml?temp=4.340762E-02
解决方案 »
- 请教Release版本DLL中Heap Corrupted问题
- 当给按钮关联一个变量后,怎样给它加载图片?
- 散尽可用分帮忙解决电子白板在线人数显示问题(有源码下载)
- 我下载了一个vc2002环境的程序,在2005底下编译,死活只要msvc71d.dll?
- 一个疑问:是否在大图标方式下的CListCtrl图标不能显示多个不同的图标,即不同的记录不同的图标显示???
- 简单的问题,在线等待答案
- 在对话中为控件添加背景图片问题?
- 鼠标光标形状动态改变
- 共有多少文件操作方法?
- .hpp是什么文件,它和.h有什么区别?
- 开发者聊天室,聚人气,大家都来啊!www.cngo.net/chat
- 如何读取十六进制文件的内容?
所有的包有一个共同的ID表明是本次发送的数据
在拆包前先发送包的数目(跟序号对应),每收到一个包将这个序号做标记,下次收到就丢弃
我以前写socket就是这么做的,没出现什么问题
仅供你参考,具体细节我也忘了,一年半都没写这种程序了
其实那个帖子我说的那个方法已经能保证99%的正确性了呵呵可惜很多网络版的高手都不来了,要不问问他们或许能有个结果-_-#TO BLsoft(网龙)
楼主说的是类似sniffer的东西,监听到的都是最原始的数据包,然后把与pop3有关的数据包重组起来合成一个mail的