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 + -
显示快捷键?