网络服务器软件开发/中间件开发,关注ACE/ICE/boost

C++博客 首页 新随笔 联系 聚合 管理
  152 Posts :: 3 Stories :: 172 Comments :: 0 Trackbacks
      wireshark(http://www.wireshark.org/)是我经常用到的抓包工具,这对于网络程序的调试至关重要,特别是客户端人员和服务端人员都认为自己的代码没问题时,wireshark本身是开源的,在windows平台下基于 winpcap(http://www.winpcap.org/)开发的,安装wireshark的时候,会提示在线安装winpcap,今天在笔记本上用VS2008,编译了Examples-pcap下面的basic_dump和basic_dump_ex,不曾想到的是抓不到包,甚是奇怪,因为用wireshark抓包是可以的,因此怀疑是不是哪个参数设施不对,终于比对wireshark,得出结论:将pcap_open_live的第四个参数设为0,即不能打开混杂模式,

if ((adhandle= pcap_open_live(d->name, // name of the device
        65536,   // portion of the packet to capture.
           // 65536 grants that the whole packet will be captured on all the MACs.
        0,    // promiscuous mode (nonzero means promiscuous)
        1000,   // read timeout
        errbuf   // error buffer
        )) == NULL)
 {
  fprintf(stderr,"\nUnable to open the adapter. %s is not supported by WinPcap\n", d->name);
  /* Free the device list */
  pcap_freealldevs(alldevs);
  return -1;
 }
posted on 2010-12-22 21:59 true 阅读(4312) 评论(3)  编辑 收藏 引用 所属分类: 网络服务器开发

Feedback

# re: winpcap抓取无线网卡上的数据包 2011-03-21 15:09 whappyo
winpcap为什么一直都抓不到数据包?和我用的是无线上网有关系吗?改成0了也不行啊?请帮帮忙!!  回复  更多评论
  

# re: winpcap抓取无线网卡上的数据包[未登录] 2011-03-21 20:46 true
@whappyo
先用抓包工具wireshark检查是否能抓到包,如果能,就仔细检查下附带的实例代码,代码中都有详尽的注释,可以尝试调整一下参数,另外winpcap是抓不到loopback的包的,也就是抓不到同一主机内部通讯的包。  回复  更多评论
  

# re: winpcap抓取无线网卡上的数据包 2012-01-10 19:06 流浪者
我试过了,设置为promiscuous mode确实抓不到无线网卡的包。改成non-promiscuous mode就可以了。  回复  更多评论
  


只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理