IP数据包的解析

来源:百度知道 编辑:UC知道 时间:2024/05/22 05:49:12
#include<iostream.h>
#include<winsock2.h>
#include<ws2tcpip.h>
#pragma comment(lib,"ws2_32")
#define IO_RCVALL _WSAIOW(IOC_VENDOR,1)
typedef struct IP_HEAD
{
union
{
unsigned char Version;
unsigned char HeadLen;
};
unsigned char ServiceType;
unsigned short TotalLen;
unsigned short Identifier;
union
{
unsigned short Flags;
unsigned short FragOffset;
};
unsigned char TimeToLive;
unsigned char Protocol;
unsigned short HeadChecksum;
unsigned int SourceAddr;
unsigned int DestinAddr;
unsigned char Options;
}ip_head;
void main(int argc,char *argv[])
{
if(argc!=2)
{
cout<<endl<<"请以下格式输入命令行:PackParse packet_sum"<<endl;
return;
}
WSADATA WSAData;
if(WSAStartup(MAKEWORD(2,2), &WSAData)!=0)
{
cout<<endl<<"WSAS

改了一个问题,其他没错
另外,这里也不需要setsockopt
#include<iostream>
#include<winsock2.h>
#include<ws2tcpip.h>

#pragma comment(lib,"ws2_32")

#define IO_RCVALL _WSAIOW(IOC_VENDOR,1)

typedef struct IP_HEAD
{
union
{
unsigned char Version;
unsigned char HeadLen;
};
unsigned char ServiceType;
unsigned short TotalLen;
unsigned short Identifier;
union
{
unsigned short Flags;
unsigned short FragOffset;
};
unsigned char TimeToLive;
unsigned char Protocol;
unsigned short HeadChecksum;
unsigned int SourceAddr;
unsigned int DestinAddr;
unsigned char Options;
}ip_head;

void main(int argc,char *argv[])
{
using namespace std;
if(argc!=2)
{
cout<<endl<<"请以下格式输入命令行:PackParse packet_sum"<<endl;
return;
}
WSADATA WSAData;