随便转载,转载请注明出处http://blog.youkuaiyun.com/leotangcw/
欢迎大家和我交流Email:tangchengwen@163.com
winpcap开发包使用中的问题总结(之一):
http://blog.youkuaiyun.com/leotangcw/archive/2006/05/23/751132.aspx
最近使用winpcap发包又发现了点毛病,这里贴出来。
1。关于winpcap的延迟参数设置多少。
在winpcap的open_live中有一个延迟参数,主要是设置多长时间返回,当使用主线程抓包时应该设置长一点,500ms~1000ms左右,设置的过小winpcap 会抓不到包。如果是在子线程下可以设置的小一些。
2。如果有发包的情况怎么设置。
如果你的捕获和发包在一个线程里,就是捕获后立即发包的话,你会发现即使设置成1ms还是有不小的延迟,我感觉主要还是winpcap发包机制不是太好,你可以设置成-1,也就是捕获后立刻返回,这样会快一些(平均反映速度提高10倍左右),虽然还是会有些的延迟,但是一般的项目要求基本可以满足了。
3。出现不停发送同一个包的情况怎么办。
如果你在作TCP或DNS,ARP欺骗或其他需要捕获后立刻发送包的程序时可能会发现每捕获一个包就会作很多回复,而且是一样的,为什么呢?一般是因为你的pcap_next_ex或类似的抓包函数没有注意返回值,一定要注意写成if(pcap_next_ex(....)==1)的形式,不要直接用pcap_next_ex因为其可能==0这个时候会把前一个包重复抓一遍。可以参考winpcap开发手册。
好了,先写到这里吧,下次继续!