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