(完整word版)计算机网络课程设计(第五章)发送ARP数据包(完整程序代码)(word文档良心出品).doc
上传人:努力****绮亦 上传时间:2024-09-10 格式:DOC 页数:6 大小:114KB 金币:10 举报 版权申诉
预览加载中,请您耐心等待几秒...

(完整word版)计算机网络课程设计(第五章)发送ARP数据包(完整程序代码)(word文档良心出品).doc

(完整word版)计算机网络课程设计(第五章)发送ARP数据包(完整程序代码)(word文档良心出品).doc

预览

在线预览结束,喜欢就下载吧,查找使用更方便

10 金币

下载此文档

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

计算机网络课程设计——机械工业出版社第5章:发送ARP数据包课程设计目的:ARP协议用于完成IP地址与MAC地址之间的转换。熟悉ARP协议对于IP数据包的传送过程具有重要意义。本课程设计的主要目的是通过封装与发送ARP帧,了解ARP协议的工作原理与ARP帧的结构。完整程序代码:#include<iostream.h>#include<pcap.h>#pragmacomment(lib,"wpcap.lib")#pragmacomment(lib,"ws2_32.lib")typedefstructPhyFrame{unsignedcharDstMAC[6];unsignedcharSrcMAC[6];unsignedshortFrameType;}PHYFRAME;typedefstructArpFrame{unsignedshortHardwareType;unsignedshortProtocolType;unsignedcharMACLen;unsignedcharIPLen;unsignedshortFlag;unsignedcharSrcMAC[6];unsignedcharSrcIP[4];unsignedcharDstMAC[6];unsignedcharDstIP[4];unsignedcharPadding[18];}ARPFRAME;typedefstructArpPacket{PHYFRAMEphyFrame;ARPFRAMEarpFrame;}*ARPPACKET;ArpPacketarpPacket;intCheckMAC(char*argv,unsignedchar*mac_addr){charmac[18];inti=0,j=0,k=0;strcpy(mac,argv);intm=strlen(argv);for(i=0;i<m;i++){if(mac[i]<'-'||(mac[i]>'-'&&mac[i]<'0')||(mac[i]>'9'&&mac[i]<'A')||(mac[i]>'Z'&&mac[i]<'a')||mac[i]>'z'){cout<<"macaddresserror"<<endl;return0;}else{if(mac[i]!='-')j++;else{k++;if(j>2){cout<<"macaddresserrot"<<endl;return0;}elsej=0;if(k>5){cout<<"macaddresserror"<<endl;return0;}}}}for(i=0;i<6;i++){while(*(mac+j)=='-')j++;if(*(mac+j)>='0'&&*(mac+j)<='9')mac_addr[i]=(unsignedchar)(*(mac+j)-'0');if(*(mac+j)>='a'&&*(mac+j)<='z')mac_addr[i]=(unsignedchar)(*(mac+j)-'a'+10);if(*(mac+j)>='A'&&*(mac+j)<='Z')mac_addr[i]=(unsignedchar)(*(mac+j)-'A'+10);j++;mac_addr[i]*=16;if(*(mac+j)>='0'&&*(mac+j)<='9')mac_addr[i]+=(unsignedchar)(*(mac+j)-'0');if(*(mac+j)>='a'&&*(mac+j)<='z')mac_addr[i]+=(unsignedchar)(*(mac+j)-'a'+10);if(*(mac+j)>='A'&&*(mac+j)<='Z')mac_addr[i]+=(unsignedchar)(*(mac+j)-'A'+10);j++;}return1;}intCheckIP(char*argv,unsignedchar*ip_addr){charip[16];inti=0,j=0,k=0;strcpy(ip,argv);intm=strlen(argv);for(i=0;i<m;i++){if(ip[i]<'.'||(ip[i]>'.'&&ip[i]<'0')||ip[i]>'9'){cout<<"IPaddres