?? tracer.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 + -