📄 unitping.h
字号:
//---------------------------------------------------------------------------
#ifndef UnitPingH
#define UnitPingH
//---------------------------------------------------------------------------
#include <Classes.hpp>
#include <Controls.hpp>
#include <StdCtrls.hpp>
#include <Forms.hpp>
#include <ExtCtrls.hpp>
#include <winsock2.h>
#define ICMP_ECHO 8
#define ICMP_ECHOREPLY 0
#define ICMP_MIN 8 //ICMP报头的最小字节数
#define MAXIPHEADER 60 //IP数据报的最大字节数
#define MAXNUM 10 //定义发送的报文的次数数
// IP header
typedef struct tagIPHEADER {
unsigned char h_len:4; // length of the header
unsigned char version:4; // Version of IP
unsigned char tos; // Type of service
unsigned short total_len; // total length of the packet
unsigned short ident; // unique identifier
unsigned short frag_and_flags; // flags
unsigned char ttl;
unsigned char proto; // protocol (TCP, UDP etc)
unsigned short checksum; // IP checksum
unsigned int sourceIP;
unsigned int destIP;
} IPHEADER;
// ICMP header
typedef struct tagICMPHEADER
{
BYTE i_type;
BYTE i_code;
USHORT i_cksum;
USHORT i_id;
USHORT i_seq;
ULONG timestamp; //时间戳
} ICMPHEADER;
//---------------------------------------------------------------------------
class TForm1 : public TForm
{
__published: // IDE-managed Components
TPanel *Panel1;
TMemo *Memo1;
TEdit *Edit1;
TLabel *Label1;
TLabel *Label2;
TEdit *Edit2;
TButton *Button1;
TButton *Button2;
TEdit *Edit3;
TLabel *Label3;
TTimer *Timer1;
void __fastcall Button2Click(TObject *Sender);
void __fastcall Button1Click(TObject *Sender);
void __fastcall Timer1Timer(TObject *Sender);
private:
SOCKET SockRaw;//Socket对象
char* pICMPData;//指向ICMP数据缓冲区
char* pRecvBuf;//指向接收数据缓冲区
sockaddr_in saDest;//存储Ping的目的地址
int PacketSize;//数据长度
int SeqIndex;//报文序号
int RecvPack;//接收到的报文数目
private: // User declarations
void Ping();
void IniSocket();
void Fill_ICMP_Data(char *pICMPData, int nDataSize);
USHORT CheckSum(USHORT *DataBuffer, int Size);//校验和函数
//数据解码函数
bool Decode_Resp(char *Buffer, int Bytes, sockaddr_in *SocketFrom);
public: // User declarations
__fastcall TForm1(TComponent* Owner);
};
//---------------------------------------------------------------------------
extern PACKAGE TForm1 *Form1;
//---------------------------------------------------------------------------
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -