#include <stdio.h>
#include <WINSOCK2.H>
#include <windows.h>
#include <ws2tcpip.h> //IP_TTL
#pragma comment(lib,"ws2_32.lib")
//ICMP首部结构体
typedef struct tagICMPHEADER
{
unsigned char type;//类型
unsigned char code;//代码
unsigned short checknum;//检验和
unsigned short id;//标识符
unsigned short seq_num;//序列号
}ICMPHEADER;
//IP首部结构体
typedef struct _ip_hdr
{
unsigned char ihl:4; //首部长度
unsigned char version:4, //版本
unsigned char tos; //服务类型
unsigned short tot_len; //总长度
unsigned short id; //标志
unsigned short frag_off; //分片偏移
unsigned char ttl; //生存时间
unsigned char protocol; //协议
unsigned short chk_sum; //检验和
struct in_addr srcaddr; //源IP地址
struct in_addr dstaddr; //目的IP地址
}IPHEADER;
//计算检验和
unsigned short checksum(unsigned short *buffer, int size)
{
unsigned long cksum = 0; // 将所有的16数相加
while (size > 1)
{
cksum += *buffer++;
size -= sizeof(unsigned short);
}
if (s
ping 程序(vc6.0 原始套接字实现)
最新推荐文章于 2022-05-13 20:18:59 发布