西电网络编程 第5章1.ppt

  1. 1、本文档共218页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
* ether multicast   如果是以太网多播数据包,则为True。 * ip multicast   如果是IP多播数据包,则为True。 * ip6 multicast   如果是IPv6多播数据包,则为True。 * vlan [vlan_id]   如果是IEEE 802.1Q VLAN数据包,则为True。如果定义了vlan_id值,则只有定义了vlan_id数据包的才为True。   * tcp, udp, icmp   此原语等价于ip proto p或者 ip6 proto p。其中p是前面用到的某种协议。 * expr relop expr   如果满足上面的关系式,则为True。其中,relop是,,=,=,=,!= 其中之一;expr是一个数学表达式,包含整数常量、通常的二进制操作符[+,-,*,/,,|]、长度操作符和特定的数据包数据访问标识。如果要访问数据包的内部数据,可以采用下面的语法: * proto [ expr : size ]   proto是ether,fddi,tr,ip,arp,rarp,tcp,udp,icmp或者ipv6协议,表示操作的协议层。tcp、udp和其他高层协议类型只适用于IPv4,不适用于IPv6。expr表示协议层的偏移量(byte)。size是一个可选项,表示查看的字节数,缺省值为1。   例如,ether[0] 1 != 0捕获所有多播的数据流。表达式ip[0] 0xf != 5捕获所有带有选项的IP数据包。表达式ip[6:2] 0x1fff = 0捕获没有分段的数据包。tcp[0]表示TCP包头的第一个字节。   原语的组合使用:   否定操作符(! or not);   与操作符( or and);   或操作符(|| or or)。   否定操作优先级最高,与操作和或操作优先级相同,如:not host。 2. 使用Winpcap函数库wpcap.lib的步骤及实例   在Microsoft Visual C++中使用Winpcap函数库wpcap.lib要遵循以下步骤: (1) 编写使用Packet.dll的应用程序,首先需要安装Winpcap网络驱动程序。 (2) 在每个使用Winpcap函数的应用程序源文件的开始处包含文件pcap.h。 (3) 设置Visual C++编程环境链接器(linker)的选项(options),使其包含wpcap.lib函数库文件。wpcap.lib可以在Winpcap开发包(Winpcap Developers Pack)中找到。   设置Visual C++编程环境链接器(linker)的选项(options),使其包含WinSock函数库文件(例如wsock32.lib)。某些Libpcap函数需要WinSock支持。     1) 取得网络设备列表   基于Winpcap应用程序要做的第一件事就是要取得网络设备列表。Libpcap提供函数pcap_findalldevs()来取得网络设备列表,此函数返回一个pcap_if结构的链表,链表中每个节点包含一个网络设备的信息。字段name和description是网络设备的名称和描述。以下程序取得网络设备列表,并显示在屏幕上。 #include pcap.h main() { pcap_if_t *alldevs; pcap_if_t *d; int i = 0; char errbuf[PCAP_ERRBUF_SIZE]; // 错误信息缓存区 // 取得网络设备列表 if (pcap_findalldevs(alldevs, errbuf) == -1) {  fprintf(stderr,Error in pcap_findalldevs: %s\n, errbuf);  exit(1); } // 显示网络设备列表 for(d=alldevs;d;d=d-next) {  printf(%d. %s, ++i, d-name);  if (d-description)   printf( (%s)\n, d-description);  else   printf( (No description available)\n); } if(i==0) {  printf(\nNo interfaces found! Make sure WinPcap is installed.\n);  return; } //释放列表 pcap_freealldevs(alldevs); }   2) 取得网络设备信息   函数pcap_findalldevs()返回的每一个pcap_if结构中,都包含有一列pcap_addr结构。在结构pca

文档评论(0)

4411184 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档