⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 tracer.h

📁 网络技术随着科学技术的发展越发先进与重要。
💻 H
字号:
// Tracer.h: interface for the CTracer class.
//
//////////////////////////////////////////////////////////////////////

#if !defined(AFX_TRACER_H__008EDC72_F861_4FCF_950B_AFBA3783CBC9__INCLUDED_)
#define AFX_TRACER_H__008EDC72_F861_4FCF_950B_AFBA3783CBC9__INCLUDED_

#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000

#include "winsock2.h"
#include "ws2tcpip.h"



#define DEF_PACKET_SIZE          32
#define MAX_PACKET               1024
#define MAX_NOTES                30
#define ICMP_MIN				 8

#define ICMP_ECHOREPLY      0
#define ICMP_DESTUNREACH    3
#define ICMP_SRCQUENCH      4
#define ICMP_REDIRECT       5
#define ICMP_ECHO           8
#define ICMP_TIMEOUT       11
#define ICMP_PARMERR       12


//IP首部数据结构

struct IPHEADER
{
	unsigned int   version:4;      // 版本
    unsigned char  tos;            // 服务类型
    unsigned short total_len;      // 报文总长度
    unsigned short ident;          // 标识
    unsigned short frag_and_flags; // 偏移量
    unsigned char  ttl;            // 寿命
    unsigned char  proto;          // 协议
    unsigned short checksum;       // 首部校验和
    unsigned int   sourceIP;       // 源站IP
    unsigned int   destIP;         // 目的站IP
};

//ICMP首部数据结构

struct ICMPHEADER
{
    BYTE   i_type;               // 类型
    BYTE   i_code;               // 代码
    USHORT i_cksum;              // 首部校验和
    USHORT i_id;                 // 标识
    USHORT i_seq;                // 序列号
    ULONG timestamp;             // 时间戳(选用)
};





class CTracer  
{
private:
	CDialog* m_pWnd;
	BOOL DecodeICMP(char* pBuffer,int bytes,int ttl);
	BOOL RecvData(char* icmpRcvBuf,int* presult);
	BOOL SendData(char* icmpData,int size);
	BOOL SetTTL(SOCKET hSocket,int ttl);
	void FillICMPData(char* icmpData,int size);
	USHORT CheckSum(char* pBuffer,int size);
	BOOL FillAddress(char* addrDest);
	SOCKET m_hSocket;           //SOCKET 句柄
	SOCKADDR_IN m_addrDest;     //目的站地址
	SOCKADDR_IN m_addrFrom;    //源站地址
	char* icmpData;
	char* icmpRcvBuf;
	int m_nSeq;
public:
	void SetWnd(CDialog* pWnd);


	void Trace(char* destAddress);

    CTracer();
	virtual ~CTracer();

};

#endif // !defined(AFX_TRACER_H__008EDC72_F861_4FCF_950B_AFBA3783CBC9__INCLUDED_)

⌨️ 快捷键说明

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