mypingdlg.h

来自「Visual_C++.NET实用编程百例」· C头文件 代码 · 共 85 行

H
85
字号
// myPingDlg.h : 头文件
//

#pragma once

#include "afxcmn.h"
#include "afxwin.h"
#define MAX_IPHEADER 60   //Ping执行的最大次数
#define ICMP_ECHO_TYPE 8
#define ICMP_MIN 8
#define MAX_PING_COUNT 4

typedef struct IP_HEADER
{
	unsigned char len:4;
	unsigned char ver:4;
	unsigned char tos;
	unsigned short total_len;
	unsigned short ident;
	unsigned short frag_and_flags;
	unsigned char ttl;
	unsigned char protocol;
	unsigned short checksum;
	unsigned int sourceIP;
	unsigned int destIP;
}IP_HEADER;
typedef struct ICMP_HEADER
{
	BYTE type;
	BYTE code;
	USHORT cksum;
	USHORT ID;
	USHORT sequence;
	ULONG timestamp;
}ICMP_HEADER;
// CmyPingDlg 对话框
class CmyPingDlg : public CDialog
{
// 构造
public:
	CmyPingDlg(CWnd* pParent = NULL);	// 标准构造函数

// 对话框数据
	enum { IDD = IDD_MYPING_DIALOG };

	protected:
	virtual void DoDataExchange(CDataExchange* pDX);	// DDX/DDV 支持


// 实现
protected:
	HICON m_hIcon;

	// 生成的消息映射函数
	virtual BOOL OnInitDialog();
	afx_msg void OnSysCommand(UINT nID, LPARAM lParam);
	afx_msg void OnPaint();
	afx_msg HCURSOR OnQueryDragIcon();
	DECLARE_MESSAGE_MAP()
private:
	// 套接字
	SOCKET m_sock;
	CString m_hostAddr;			//ping的地址
	int m_dataSize;				//发送的数据报大小
	char *m_sendBuf,*m_recBuf;	//发送和接收缓冲区
	CString m_strErr;			//出错信息
	sockaddr_in m_addrDest;		//ping的目的地址
	sockaddr_in m_addrFrom;		//收到回应的地址
	int nSend,nRec;				//发送和接收字节数
	UINT m_timer;				//定时器
	int nPing_Count;			//执行ping的次数
	USHORT GetSum(USHORT *buf,int size);//检测校验和
public:
	void ShowMsg(LPCSTR lpsz);	//显示Ping的信息
	void GetICMPPacket();		//初始化ICMP报文
	BOOL StartPing();			//开始Ping
	BOOL AnalyseBuf();			//分析回应报文
	afx_msg void OnTimer(UINT nIDEvent);
	CListBox m_listBox;
	afx_msg void OnBnClickedOk();
	int m_timeOut;
	int m_packetSize;
	CIPAddressCtrl m_IP;
};

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?