📄 myping.h
字号:
// MyPing.h: interface for the CMyPing class.
//
//////////////////////////////////////////////////////////////////////
#if !defined(AFX_MYPING_H__E07B9CBF_CD10_445E_A5DC_685E5F9CD825__INCLUDED_)
#define AFX_MYPING_H__E07B9CBF_CD10_445E_A5DC_685E5F9CD825__INCLUDED_
#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
#pragma pack(1)
#include <winsock2.h>
#include <afxsock.h>
#define ICMP_ECHOREPLY 0
#define ICMP_ECHOREQ 8
#define REQ_DATASIZE 32
//Echo 请求数据的大小
#define WM_MSG_STATUS WM_USER+0x0100
#define WM_PING_END WM_USER+0x0101
class CMyPing
{
public:
void Ping(UINT nRetries,LPCSTR pstrHost,HWND hWnd);
HWND m_hWnd;
u_short in_cksum(u_short *addr,int len);
int SendEchoRequest(SOCKET,LPSOCKADDR_IN);
int WaitForEchoReply(SOCKET s);
DWORD RecxEchoReply(SOCKET,LPSOCKADDR_IN,u_char*);
CMyPing();
virtual ~CMyPing();
protected:
void WSAError(LPCSTR pstrFrom);
};
typedef struct tagIPHDR
{
u_char VIHL;
//版本
u_char TOS;
//类型
short TotLen;
//总长
short ID;
//ID
short FlagOff;
u_char TTL;
u_char Protocol;
u_short Checksum;
struct in_addr iaSrc;
struct in_addr iaDst;
}IPHDR,*PIPHDR;
//ICMP Header-RFC 792
typedef struct tagICMPHSR
{
u_char Type;
u_char Code;
u_short Checksum;
u_short ID;
u_short Seq;
char Data;
}ICMPHDR,*PICMPHDR;
//ICMP请求
typedef struct tagECHOREQUEST
{
ICMPHDR icmpHdr;
DWORD dwTime;
char cData[REQ_DATASIZE];
}ECHOREQUEST,*PECHOREQUEST;
//ICMP回应
typedef struct tagECHOREPLY
{
IPHDR ipHdr;
ECHOREQUEST echoRequest;
char cFiller[256];
}ECHOREPLY,*PECHOREPLY;
#pragma pack()
#endif // !defined(AFX_MYPING_H__E07B9CBF_CD10_445E_A5DC_685E5F9CD825__INCLUDED_)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -