#include #pragma comment(lib,"ws2_32")
#pragma comment(lib,"packet")
#define ETH_IP 0x0800
#define ETH_ARP 0x0806
#define ARP_REQUEST 0x0001
#define ARP_REPLY 0x0002
#define ARP_HARDWARE 0x0001
#define MAX_NUM_ADAPTER 10
#pragma pack(push,1)
//最终发送的数据报结构
typedef struct ethernet_head
{
unsigned char dest_mac[6]; //目标主机mac
unsigned char source_mac[6]; //本地主机mac
unsigned short eh_type; //类型
}ethernet_head, *pEthernetHead;
//ARP数据报头结构
typedef struct arpHead
{
unsigned short hardware_type; //硬件类型
unsigned short protocol_type; //协议类型
unsigned char add_len; //硬件地址长度
unsigned char pro_len; //协议地址长度
unsigned short option; //操作号
unsigned char sour_addr[6]; //发送者硬件地址
unsigned long sour_ip; //发送者协议地址
unsigned char dest_addr[6]; //目的站硬件地址
unsigned long dest_ip; //目的站协议地址
unsigned char padding[18];
}arpHead, *pArpHead;
//IP数据报头结构
typedef struct ipHead
{
unsigned char h_lenver;
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;