📄 tracer.h
字号:
// 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 + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -