以下的结构体在实际工程中经过了测试是可以的,自定义函数也经过了测试,到目前为止没有出现问题。
// ---------------------------------------------
// TCP/IP基础结构体和通用函数
// ---------------------------------------------
#ifndef TCPIPCOMMON_H
#define TCPIPCOMMON_H
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <winsock2.h>
typedef unsigned char u_char;
typedef unsigned short int u_short;
typedef unsigned int u_int;
typedef unsigned long u_long;
// Ethernet
#define ETHERNET_HEAD_LENGTH 14
#define ARP_TYPE 0x0806 //以太头类型:ARP类型
#define IP_TYPE 0x0800 //以太头类型:IPV4类型
#define IPV6_TYPE 0x86dd //以太头类型,IPV6类型
// ARP Body 28bytes
// ARP Packet(42bytes) = Ethernet(14bytes) + ARP Body(28bytes)
#define ARP_BODY_LENGTH 28
#define ARP_PACKET_LENGTH 42
#define MPLS_TYPE 0x8847
#define IPX_TYPE 0x8137
#define IS_IS_TYPE 0x8000
#define LACP_TYPE 0x8809
#define _802_1x_TYPE 0x888E
#define ARP_HARDWARE 0x0001 //ARP包中:以太网
#define ARP_REQUEST 0x0001
#define ARP_REPLY 0x0002
// IP Header 20bytes
#define IP_HEAD_LENGTH 20
#define IP_VERSION_4 0x04 //IPV4头,版本4
#define IP_VERSION_6 0x06 //IPV4头,版本6
#define IP_TCP_TYPE 0x06 //IPV4头中的协议类型:TCP
#define IP_UDP_TYPE 0x11 //IPV4头中的协议类型:UDP
#define IP_ICMP_TYPE 0x01 //IPV4头中的协议