// TestRouteInstance.cpp : 定义控制台应用程序的入口点。 // #include "stdafx.h" #include <WinSock2.h> #include <assert.h> #include <ws2ipdef.h> #include <AtlConv.h> #pragma comment(lib, "Ws2_32.lib") #define LOCAL_IP "192.168.100.94" #define ICMP_PORT 0 #define DEST_HOST_IP "119.75.213.61" #define DEST_HOST_PORT 22 #define RECV_BUF 1024 #define MAX_HOPS 30 #define MAX_RECVTIMEOUT 500 BOOL InitWinSock() //初始化WinSock 库 { WSADATA wsaData = {0}; int iRet(0); iRet = WSAStartup(MAKEWORD(2,2), &wsaData); if(iRet != 0) { return FALSE; } if(LOBYTE(wsaData.wVersion) != 2 || LOBYTE(wsaData.wVersion) != 2) { return FALSE; } return TRUE; } //卸载套接字库 void CleanWinSock() { WSACleanup(); } #pragma pack(1) typedef struct icmp_hdr { UCHAR icmp_type; //消息类型 UCHAR icmp_code; //消息代码 USHORT icmp_checksum; //检验和 //回显头 USHORT icmp_id; //请求ID USHORT icmp_sequence; //序列号 //每次发送至此//8byte //自定义数据部分 ULONG icmp_timestamp; //时间戳 }ICMP_HDR; #pragma pack() //求检验和 USHORT CheckSum(USHORT *uBuffer, int iSize) { ULONG uCheckSum(0); //将数据以字累加到uCheckSum中 while(iSize > 1) { //uCheckSum = uCheckSum + *uBuffer; //uBuffer++; u