#ifndef __SYS_PING_H #define __SYS_PING_H #include "stdint.h" typedef struct icmp_hdr { unsigned char icmp_type; // 消息类型 unsigned char icmp_code; // 代码 unsigned short icmp_checksum; // 校验和 // 下面是回显头 unsigned short icmp_id; // 用来惟一标识此请求的ID号 unsigned short icmp_sequence; // 序列号 unsigned long icmp_timestamp; // 时间戳 } ICMP_HDR, *PICMP_HDR; typedef struct _IPHeader// 20字节的IP头 { uint8_t iphVerLen; // 版本号和头长度(各占4位) uint8_t ipTOS; // 服务类型 uint16_t ipLength; // 封包总长度,即整个IP报的长度 uint16_t ipID; // 封包标识,惟一标识发送的每一个数据报 uint16_t ipFlags; // 标志 uint8_t ipTTL; // 生存时间,就是TTL uint8_t ipProtocol; // 协议,可能是TCP、UDP、ICMP等 uint16_t ipChecksum; // 校验和 uint32_t ipSource; // 源IP地址 uint32_t ipDestination; // 目标IP地址 } IPHeader, *PIPHeader; typedef int SOCKET; void ping_task_creat(); void ETH_PingWork(void const * argument); #endif