
#define IPV4_WERSION 4
#define IPV6_WERSION 6
#define ICMP_PACKET 1
#define IGMP_PACKET 2
#define TCP_PACKET 6
#define EGP_PACKET 8
#define UDP_packet 17
#define OSPF_PACKET
class CPackCaptureDlg:public CDialog
{
public:
protected:
typedef struct IP_HEAD //IP头部结构
unsigned char Version; //版本(字节前四位)
unsigned char HeadLen; //头度(字节后四位)
unsigned char ServiceType; //服务类型
unsigned short TotalLen; //总长度
unsigned short Identifier; //标识符
unsigned short Flags; //标志位(字前三位)
unsigned short FragOffset; //片偏移(字后13位)
unsigned char TimeToLive; //生存周期
unsigned char Protocol; //协议
unsigned short HeadChecksum; //头部校验和
unsigned int SourceAddr; //源IP地址
unsigned int DestinAddr; //目的IP地址
typedef struct ICMP_HEAD //ICMP头部结构
unsigned char Type; // 类型
unsigned char Code; //代码
unsigned short HeadChecksum; // 头部校验和
unsigned short Identifior; //标识符
unsigned short Sequence; //序号
};
//PackCaptureDlg.cpp :implementation file
#include "stdafx.h"
#include "PackCaptureDlg.h"
#include "PackCapture.h"
#include "winsock2.h"
#include "ws2tcpip.h"
#pragma comment(lib,"ws2_32")
#define IO_RCVALL _WSAIOW(IOC_VENDOR,1)
void CPackCaptureDlg::OnCapture()
{
建立与Socket库绑定
初始化失败!");
创建原始Socket
创建Socket失败!");
设置Socket操作选项
设置Socket选项失败!");
获得本地主机名称
获得主机名失败!");
获得本地主机IP地址
获得主机地址失败!");
定义Socket地址结构
绑定Socket与网卡
绑定Socket失败!");
设置Socket接受模式
设置Socket接收器失败!");
版本 总长度 标志位 片偏移 协议 源地址 目的地址\\r\\n";
依次接受IP数据包
接受IP数据包失败!");
解除与Socket库绑定
}
