赞
踩
WinPcap编程出现丢包的问题
用WinPcap出现丢包现象,发送端用的802.3协议,发送的信息量有点大,每秒40M左右,我用网线连接发送端后从网卡获取数据,但是出现了丢包现象。而且由于限制,发送端又不能够增加握手,头痛啊。我自己分析,应该是我对pcap_next_ex()函数理解不够深刻,不太明白的是:pcap_next_ex()是将数据获得后存在一个缓存中然后的for循环再从这个缓存中取出数据呢还是for循环是直接从网卡一个字节一个字节的获取数据的呢?我个人觉得前者肯定更合理,但是我又不能乱猜,应为对API不太熟悉,英文又差,看不懂英文手册。还有就是我没有做MAC源地址的过滤,会不会是这个原因??请懂的高手给讲讲这个函数和它从网卡获取数据的流程,百度了很多都没找到想要的,,不胜感激!!
------解决方案--------------------
有一个网卡描述副,和两个指针,这两个指针会被初始化并返回给用户,一个是pcap_pkthdr结构,另一个是接收数据的缓冲区
------解决方案--------------------
接收的速度太慢。
试试开一个足够大的内存区作FIFO缓冲,用一个线程专门负责接收最新到达的数据并放进该缓冲。
其它线程从该缓冲中取数据并在时间允许的条件下显示数据或将数据保存到磁盘。
缓冲满时输出错误信息到日志文件。
可能最终需要考虑换一个转速快点的硬盘或干脆用固态硬盘。
多线程操作FIFO缓冲的经典例子代码:
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。