myping.h

来自「ping 不是很好要完善」· C头文件 代码 · 共 78 行

H
78
字号
// 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 + =
减小字号Ctrl + -
显示快捷键?