小弟最近用MFC+WinPcap开发了一个简单的嗅探工具,本来意图是截获网卡上获得的所有的包(包括不是发送给自己主机的包),我上网查了相关资料后知道只要把网卡设置为混杂模式就可以了,方法是pcap_open_live的第三个参数设置为1就可以了,但我现在的问题是即使我按照上述方法将网卡设置为混杂模式依然不能收到除了发送给自己主机或自己主机发送出去的包以外的包,不知道是硬件限制还是其他什么原因?不过自我感觉应该不是硬件限制的问题,因为我下载过一个叫聚生网管的局域网管理软件是可以正常工作的。望各位高手指教。
pcap_t * pcap_open_live ( char * device, int snaplen, int promisc,
int to_ms, char * errbuf );
pcap_t就是网卡描述符的类型,
device是设备名,如eth0
snaplen是要抓获的最大的包的字节数
promisc如果为非0的话,则将网卡设为混杂模式
to_ms是超时时间,如果为0则永不超时
。Winpcap定义了三种标志:
 PCAP_OPENFLAG_PROMISCUOUS:1,它定义了适配器(网卡)是否进入混杂模式(promiscuous mode)。
 PCAP_OPENFLAG_DATATX_UDP:2,它定义了数据传输(假如是远程抓包)是否用UDP协议来处理。
 PCAP_OPENFLAG_NOCAPTURE_RPCAP:4,它定义了远程探测器是否捕获它自己产生的数据包。
int to_ms, char * rrbuf );
这函数怎么设置标志位,它才不抓取自己发出的包啊?谢谢~!