📄 icmp.h
字号:
// ICMP.h: interface for the CICMP class.
//
//////////////////////////////////////////////////////////////////////
#if !defined(AFX_ICMP_H_INCLUDED_)
#define AFX_ICMP_H_INCLUDED_
#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
#define DEF_PACKET 32
#define MAX_PACKET 1024
#define MIN_PACKET 8
//----------ICMP消息定义-------------
#define ICMP_ECHO 8 //回应请求
#define ICMP_ECHOREPLY 0 //回应应答
#define ICMP_DESUNREACH 3 //目的不可达
#define ICMP_TTLOUT 11 //TTL超时
//IP及ICMP包头部结构
typedef struct ip_head{
unsigned int HeadLen:4; //用32位字表示的报头长度
unsigned int version:4; //协议版本
unsigned char level; //优先级
unsigned short len; //包长度
unsigned short ID; //标识
unsigned short mflag; //其它标记
unsigned char ttl; //生命期
unsigned char prot; //协议
unsigned short cksum; //检查和
unsigned int sourIP; //源IP地址
unsigned int destIP; //目的IP地址
//省略其他选项
}IP_HEAD;
typedef struct icmp_head{
unsigned char type; //类型
unsigned char code; //编码
unsigned short cksum; //检查和
unsigned short ID; //标识
unsigned short number; //计数值
unsigned int time; //时间(可选项目中)
}ICMP_HEAD;
class CICMP
{
public:
IP_HEAD * m_pIp;
ICMP_HEAD * m_pIcmp;
SOCKET winsock;
CString m_strInfo;
CString RouteState;
sockaddr_in m_sockAddr;
int routestate;
char * routeaddr;
public:
BOOL Initialize(void); //初始化
void Uninitialize(void); //反初始化
USHORT CheckSum(USHORT *buffer, int size); //检查和
BOOL SendICMPPack(char * pAddr); //发送报文
BOOL SendICMPPack(sockaddr_in * pAddr); //发送报文
BOOL RecvICMPPack(void); //接收报文
int SetTTL(int TTL); //设置TTL
CICMP();
virtual ~CICMP();
};
#endif // !defined(AFX_ICMP_H_INCLUDED_)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -