winpcap编程,在新建的类的头文件中加入packet32.h头文件后,出现大量的类型重定义错误(文件winsock2.h),怎么办
ludou 2002-08-24 11:39:55 在用winpcap编程的过程中,在新建的类的头文件中加入packet32.h头文件后,出现大量的类型重定义错误(winsock2.h),如:
d:\编程工具\Microsoft Visual Studio .NET\Vc7\PlatformSDK\Include\WinSock2.h(109): error C2011: “fd_set” : “struct”
怎么办:下面是我的头文件:
------------------------------------------------------------------------
#pragma once
#include "Thread.h"
#include "Packet32.h"
//#define EPT_IP 0x0800 /* type: IP */
//#define EPT_ARP 0x0806 /* type: ARP */
//#define EPT_RARP 0x8035 /* type: RARP */
//#define ARP_HARDWARE 0x0001 /* Dummy type for 802.3 frames */
//#define ARP_REQUEST 0x0001 /* ARP request */
//#define ARP_REPLY 0x0002 /* ARP reply */
typedef struct arpPacket
{
unsigned char eh_dst[6]; /* destination ethernet addrress */
unsigned char eh_src[6]; /* source ethernet addresss */
unsigned short eh_type; /* ethernet pachet type */
unsigned short arp_hrd; /* format of hardware address */
unsigned short arp_pro; /* format of protocol address */
unsigned char arp_hln; /* length of hardware address */
unsigned char arp_pln; /* length of protocol address */
unsigned short arp_op; /* ARP/RARP operation */
unsigned char arp_sha[6]; /* sender hardware address */
unsigned long arp_spa; /* sender protocol address */
unsigned char arp_tha[6]; /* target hardware address */
unsigned long arp_tpa; /* target protocol address */
} ARPPACKET;
extern LPADAPTER;
extern LPPACKET;
// 发送ARP广播
class CThread_ARP_Broadcast :
public CThread
{
UINT m_uSendedPacketNum; // 已发送的ARP包的数目
UINT m_uFrequency; // 发送频率
LPADAPTER m_lpAdapter;
LPPACKET m_lpPacket;
char m_szPacketBuf[600];
// 工作线程,发送ARP包
virt DWORD ThreadMethod();
public:
CThread_ARP_Broadcast(void);
~CThread_ARP_Broadcast(void);
// 开始发送ARP包
int Begin(CString sAdapter, CString sSourceMACString, CString sSourceIP, UINT nFrequency);
// 设置发送频率
void SetFrequency(UINT uFrequency);
// 停止发送ARP包
void Stop(void);
// 返回已发送的ARP包的数目,用于统计或计算实际发送速度,每次调用,会把m_uSendedPacketNum 清零
UINT GetSendedPacketNum(void);
// 将格化化后的MAC(如:"00-01-02...")转变为ARP包需要的原始MAC
static int FormatedMac2Mac(CString sFormatedMac, CString& sMac);
};