没有合适的资源?快使用搜索试试~ 我知道了~
系统ping程序的源程序
5星 · 超过95%的资源 需积分: 3 73 下载量 105 浏览量
2010-03-17
23:29:26
上传
评论
收藏 10KB TXT 举报
温馨提示
试读
10页
用c++编写的,内附非常详细的注释,基本每行都有注释,方便理解学习!
资源推荐
资源详情
资源评论
#pragma pack(4)
#pragma comment(lib, "ws2_32.lib")
#include "winsock2.h"
#include "stdlib.h"
#include "stdio.h"
#define ICMP_ECHO 8//定义回显报文代码
#define ICMP_ECHOREPLY 0
#define ICMP_MIN 8 //最小8字节ICMP包
/* IP头首部结构 */
typedef struct iphdr {
unsigned int h_len:4; // 首部长度
unsigned int version:4; // IP版本
unsigned char tos; // 服务类型
unsigned short total_len; // 包总长度
unsigned short ident; //标识符
unsigned short frag_and_flags; // 标志
unsigned char ttl;// 生存周期
unsigned char proto; // protocol (TCP, UDP etc) 协议类型
unsigned short checksum; //IP检验和
unsigned int sourceIP;//源地址IP
unsigned int destIP;//目的地址IP
}IpHeader;
//
// ICMP 首部结构
//
typedef struct icmphdr {
BYTE i_type;//类型
#pragma comment(lib, "ws2_32.lib")
#include "winsock2.h"
#include "stdlib.h"
#include "stdio.h"
#define ICMP_ECHO 8//定义回显报文代码
#define ICMP_ECHOREPLY 0
#define ICMP_MIN 8 //最小8字节ICMP包
/* IP头首部结构 */
typedef struct iphdr {
unsigned int h_len:4; // 首部长度
unsigned int version:4; // IP版本
unsigned char tos; // 服务类型
unsigned short total_len; // 包总长度
unsigned short ident; //标识符
unsigned short frag_and_flags; // 标志
unsigned char ttl;// 生存周期
unsigned char proto; // protocol (TCP, UDP etc) 协议类型
unsigned short checksum; //IP检验和
unsigned int sourceIP;//源地址IP
unsigned int destIP;//目的地址IP
}IpHeader;
//
// ICMP 首部结构
//
typedef struct icmphdr {
BYTE i_type;//类型
BYTE i_code; // 代码类型
USHORT i_cksum;//检验和
USHORT i_id;//地址
USHORT i_seq;//发送顺序
/* This is not the std header, but we reserve space for time */
ULONG timestamp;//接受时间
}IcmpHeader;
#define STATUS_FAILED 0xFFFF
#define DEF_PACKET_SIZE 32 //默认包的大小
#define DEF_PACKET_NUMBER 4 /* 发送数据报的个数 */
#define MAX_PACKET 1024 //最大ICMP大小
#define xmalloc(s) HeapAlloc(GetProcessHeap(),HEAP_ZERO_MEMORY,(s))
#define xfree(p) HeapFree (GetProcessHeap(),0,(p))
void fill_icmp_data(char *, int);
USHORT checksum(USHORT *, int);
int decode_resp(char *,int ,struct sockaddr_in *);
void Usage(char *progname){
fprintf(stderr,"Usage:\n");
fprintf(stderr,"%s [number of packets] [data_size]\n",progname);
fprintf(stderr,"datasize can be up to 1Kb\n");
ExitProcess(STATUS_FAILED);//结束此进程返回给父进程值
}
/*主函数
agrc : 参数的个数 ,默认为一
agrv : 参数的内容 ,用于传递输入的IP地址
调试方法:在CMD命令行中到该程序的子目录打xping 127.0.0.1(IP地址任意)
USHORT i_cksum;//检验和
USHORT i_id;//地址
USHORT i_seq;//发送顺序
/* This is not the std header, but we reserve space for time */
ULONG timestamp;//接受时间
}IcmpHeader;
#define STATUS_FAILED 0xFFFF
#define DEF_PACKET_SIZE 32 //默认包的大小
#define DEF_PACKET_NUMBER 4 /* 发送数据报的个数 */
#define MAX_PACKET 1024 //最大ICMP大小
#define xmalloc(s) HeapAlloc(GetProcessHeap(),HEAP_ZERO_MEMORY,(s))
#define xfree(p) HeapFree (GetProcessHeap(),0,(p))
void fill_icmp_data(char *, int);
USHORT checksum(USHORT *, int);
int decode_resp(char *,int ,struct sockaddr_in *);
void Usage(char *progname){
fprintf(stderr,"Usage:\n");
fprintf(stderr,"%s [number of packets] [data_size]\n",progname);
fprintf(stderr,"datasize can be up to 1Kb\n");
ExitProcess(STATUS_FAILED);//结束此进程返回给父进程值
}
/*主函数
agrc : 参数的个数 ,默认为一
agrv : 参数的内容 ,用于传递输入的IP地址
调试方法:在CMD命令行中到该程序的子目录打xping 127.0.0.1(IP地址任意)
剩余9页未读,继续阅读
f4haofeng
- 粉丝: 1
- 资源: 12
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
- 1
- 2
前往页