?? ping.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 + -