tracer.h

来自「路由跟踪 程序记录并显示了数据报从源端机器传送到目标机器的过程中所经过的路由器的」· C头文件 代码 · 共 57 行

H
57
字号
// Tracer.h: interface for the CTracer class.
//
//////////////////////////////////////////////////////////////////////
#include "winsock2.h"
#include "ws2tcpip.h"

#if !defined(AFX_TRACER_H__84F6D67F_0A14_4B4C_BB8D_9653F239D81A__INCLUDED_)
#define AFX_TRACER_H__84F6D67F_0A14_4B4C_BB8D_9653F239D81A__INCLUDED_

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



//必要的宏定义
#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

class CTracer  
{
public:
	 CTracer();
	 void SetWnd(CDialog *pWnd); //调用主窗口类的成员函数InfoAdd来添加显示结果。 
	 void Trace(char *destAddress);//调用此函数来进行路由器的跟踪
	 virtual ~CTracer();
	  ULONG time1,time2;
private:
	CDialog* m_pWnd;              //指向主窗口的指针
	char* icmpData;                 //指向发送报文内存空间的指针
	char* icmpRcvBuf;              //指向报文接收缓冲空间的指针
	int m_nSeq;                    //报文序列号
	SOCKET m_hSocket;            //套接字句柄
	SOCKADDR_IN m_addrDest;     //目的主机地址
	SOCKADDR_IN m_addrFrom;     //存放路由地址
    USHORT CheckSum(char* pBuffer,int size); //用来计算校验和
	BOOL FillAddress(char *addrDest);     //用来将输入的字符串格式的目的主机地址转换为能够使用的地址格式。
    void FillICMPData(char* icmpData,int size);   ////填充ICMP报文首部
    BOOL SetTTL(SOCKET hSocket, int ttl);   //设置数据报的寿命
	BOOL SendData(char* icmpData,int size);   //发送数据报
    BOOL RecvData(char* icmpRcvBuf,int* presult);     ////接收数据报
    BOOL DecodeICMP(char* pBuffer,int bytes,int ttl);	//处理接收到的数据报
   
};

#endif // !defined(AFX_TRACER_H__84F6D67F_0A14_4B4C_BB8D_9653F239D81A__INCLUDED_)

⌨️ 快捷键说明

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