⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 icmp.h

📁 实现tracert
💻 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 + -