1、我在DEBUG模式下可以运行该程序,在RELEASE里面在链接时出现错误,请问一般是什么原因造成的?
2、我用WINPCAP写SNIFFER程序,但是在我用PING命令时,确只能获取自己发出去的数据包,不能获得被PING的机器返回的数据包。而且在其它动作中,也会丢失掉40%左右的数据包,请问为何?部分代码如下://将网络适配器设置为混杂模式,监听流过本地主机的数据报
PacketSetHwFilter(lpAdapter,NDIS_PACKET_TYPE_PROMISCUOUS);
//自定义网络适配器的缓冲的大小为 512*1024
PacketSetBuff(lpAdapter,512*1024);
//设置接收一个数据报后等待的时间为1毫秒(设置一次读操作返回的超时时间)
PacketSetReadTimeout(lpAdapter,1);pThread=AfxBeginThread(Start_ET_Sniffer_Thread,this,0,0,CREATE_SUSPENDED);
while(!pThread)
pThread=AfxBeginThread(Start_ET_Sniffer_Thread,this,0,0,CREATE_SUSPENDED);......
//获得总缓冲区长度
AllBufLen=lpPacket->ulBytesReceived; //如果总缓冲区长度>0,则分析数据
if(AllBufLen>0)
{
我用RAW_SOCKET都可以捕获!

解决方案 »

  1.   

    1、你的Release版本肯忘了Link必须的Lib文件
      

  2.   

    对不起,上面第一个问题写错了,在RELEASE里面是在运行时出现错误!在DEBUG下没有问题。不知道上面两个问题是否有点联系?
      

  3.   

    第二个问题已经解决,是由于在网卡缓冲中保存不止一个winpcap获取的PACKET,我原来的代码只读取了缓冲中的第一个包,所以产生了包的丢失。
    第一个问题已经找到,但是不知道为何引起的。问题是我声明了两个CStringList对象。如果去掉这两个声明,程序就没有问题,奇怪!