#include#include#i"> #include#include#i" />
ping程序设计(c语言课程设计)

ping程序设计(c语言课程设计)

ID:18216682

大小:74.50 KB

页数:12页

时间:2018-09-15

ping程序设计(c语言课程设计)_第1页
ping程序设计(c语言课程设计)_第2页
ping程序设计(c语言课程设计)_第3页
ping程序设计(c语言课程设计)_第4页
ping程序设计(c语言课程设计)_第5页
资源描述:

《ping程序设计(c语言课程设计)》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、源码分析1.程序预处理/*导入库文件*/#pragmacomment(lib,"ws2_32.lib")/*加载头文件*/#include#include#include#include#include/*定义常量*//*表示要记录路由*/#defineIP_RECORD_ROUTE0x7/*默认数据报大小*/#defineDEF_PACKET_SIZE32/*最大的ICMP数据报大小*/#defineMAX_PACKET1024/*最大

2、IP头长度*/#defineMAX_IP_HDR_SIZE60/*ICMP报文类型,回显请求*/#defineICMP_ECHO8/*ICMP报文类型,回显应答*/#defineICMP_ECHOREPLY0/*最小的ICMP数据报大小*/#defineICMP_MIN8/*自定义函数原型*/voidInitPing();voidUserHelp();voidGetArgments(intargc,char**argv);USHORTCheckSum(USHORT*buffer,intsize);voidFillICMPData(char

3、*icmp_data,intdatasize);voidFreeRes();voidDecodeIPOptions(char*buf,intbytes);voidDecodeICMPHeader(char*buf,intbytes,SOCKADDR_IN*from);voidPingTest(inttimeout);/*IP报头字段数据结构*/typedefstruct_iphdr{unsignedinth_len:4;/*IP报头长度*/unsignedintversion:4;/*IP的版本号*/unsignedchartos;/*服

4、务的类型*/unsignedshorttotal_len;/*数据报总长度*/unsignedshortident;/*惟一的标识符*/unsignedshortfrag_flags;/*分段标志*/unsignedcharttl;/*生存期*/unsignedcharproto;/*协议类型(TCP、UDP等)*/unsignedshortchecksum;/*校验和*/unsignedintsourceIP;/*源IP地址*/unsignedintdestIP;/*目的IP地址*/}IpHeader;/*ICMP报头字段数据结构*/t

5、ypedefstruct_icmphdr{BYTEi_type;/*ICMP报文类型*/BYTEi_code;/*该类型中的代码号*/USHORTi_cksum;/*校验和*/USHORTi_id;/*惟一的标识符*/USHORTi_seq;/*序列号*/ULONGtimestamp;/*时间戳*/}IcmpHeader;/*IP选项头字段数据结构*/typedefstruct_ipoptionhdr{unsignedcharcode;/*选项类型*/unsignedcharlen;/*选项头长度*/unsignedcharptr;/*地

6、址偏移长度*/unsignedlongaddr[9];/*记录的IP地址列表*/}IpOptionHeader;/*定义全局变量*/SOCKETm_socket;IpOptionHeaderIpOption;SOCKADDR_INDestAddr;SOCKADDR_INSourceAddr;char*icmp_data;char*recvbuf;USHORTseq_no;char*lpdest;intdatasize;BOOLRecordFlag;doublePacketNum;BOOLSucessFlag;2.初始化模块/*初始化变量函

7、数*/voidInitPing(){WSADATAwsaData;icmp_data=NULL;seq_no=0;recvbuf=NULL;RecordFlag=FALSE;lpdest=NULL;datasize=DEF_PACKET_SIZE;PacketNum=5;SucessFlag=FALSE;/*Winsock初始化*/if(WSAStartup(MAKEWORD(2,2),&wsaData)!=0){/*如果初始化不成功则报错,GetLastError()返回发生的错误信息*/printf("WSAStartup()fail

8、ed:%d",GetLastError());return;}m_socket=INVALID_SOCKET;}3.功能控制模块/*显示信息函数*/voidUserHelp(){print

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。