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

📄 ping.h

📁 此程序可以扫描多的IP和端口。另外可以多线程训话扫描
💻 H
字号:
// Ping.h: interface for the CPing class.
// Ping 类:实现对目标主机的Ping 探测
//////////////////////////////////////////////////////////////////////

#if !defined(AFX_PING_H__BB63CFC8_AFE2_4C8D_A67A_EB674FEE12DF__INCLUDED_)
#define AFX_PING_H__BB63CFC8_AFE2_4C8D_A67A_EB674FEE12DF__INCLUDED_

#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000

#define IP_RECORD_ROUTE  0x7
#define DEF_PACKET_SIZE  32 
#define MAX_PACKET       1024      //ICMP报的最大长度 Max ICMP packet size
#define MAX_IP_HDR_SIZE  60       
#define ICMP_ECHO        8
#define ICMP_ECHOREPLY   0
#define ICMP_MIN         8          // ICMP报的最小长度Minimum 8-byte ICMP packet (header)

typedef struct _pingiphdr 
{
    unsigned int   h_len:4;        // IP首部长度
    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;          // 协议(TCP,UDP等)
    unsigned short checksum;       // IP校验和
    unsigned int   sourceIP;       //源地址
   unsigned int   destIP;          //目标地址
} IpHeader;


typedef struct _icmphdr 
{
    BYTE   i_type;                  //ICMP报文头
    BYTE   i_code;                  //ICMP代码
    USHORT i_cksum;                 //检验和
    USHORT i_id;                    //标识符
    USHORT i_seq;                   //序列号
    ULONG  timestamp;               //时间戳
} IcmpHeader;

typedef struct _pingipoptionhdr
{
    unsigned char        code;        // 选项类型
    unsigned char        len;         //选项头的长度
    unsigned char        ptr;         //地址偏移量 
    unsigned long        addr[9];     // IP地址列表
} IpOptionHeader;


class CPing  
{
public:
	CPing();
	virtual ~CPing();
	//初始化ICMP
	void FillICMPData(char *icmp_data, int datasize);
	//生成校验和
	USHORT checksum(USHORT *buffer, int size);
	//解析IP头
	bool DecodeICMPHeader(char *buf, int bytes, SOCKADDR_IN* from);
	//释放Winsock链接库
	void Cleanup();
	//实现Ping操作
	bool Ping(char *dest,int timeout =1000);

	//Socket句柄
	SOCKET m_hSocket;
	//IP选项头
	IpOptionHeader   m_ipopt;
	//目标地址
	SOCKADDR_IN m_addrDest;
	//源地址
	SOCKADDR_IN m_addrFrom;
	//ICMP报文
	char              *icmp_data;
	//接受缓冲区
    char              *recvbuf;
	//发送序列号
	 USHORT             seq_no ;
	 //目标名称指针
	 char *lpdest;
	 //数据大小
	int   datasize;
	//记录路由标志


};

#endif // !defined(AFX_PING_H__BB63CFC8_AFE2_4C8D_A67A_EB674FEE12DF__INCLUDED_)

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -