帮我解析一下这个程序。会VC++的来。急急急

[复制链接]
查看11 | 回复2 | 2009-4-29 10:27:19 | 显示全部楼层 |阅读模式
if(!GetForInfoFromXML(arEventTable,strXmlInfo)) return FALSE;;
PIPHDR pIPhdr;
pIPhdr = (PIPHDR)(pkt_data+sizeof(ETHDR));
unsigned short SrcPort,DesPort;
int nstrLen;
u_char *pstr;
int IPLen = 0;
IPLen=( (pIPhdr->h_lenver) &0x0f);
IPLen=IPLen*4;
if(pIPhdr->proto == 6)
{
PTCPHDR pTCP = (PTCPHDR)(pkt_data+sizeof(ETHDR)+ IPLen);
SrcPort = pTCP->source;
DesPort = pTCP->dest;
int nTemp = sizeof(ETHDR)+IPLen+sizeof(TCPHDR);
nstrLen = pkthdr->len -nTemp;
pstr = (u_char *)(pkt_data+nTemp);
}

回复

使用道具 举报

千问 | 2009-4-29 10:27:19 | 显示全部楼层
这段代码主要用来处理TCP/IP封包,你需要对IP头有个基本的认识。其中PIPHDR表示ip协议头指针,ETHDR表示以太网头,PTCPHDR表示tcp协议头指针。pkt_data表示接收到的原始封包数据,加上以太网头的尺寸后即是IP头,因为IP头紧跟以太网头后面。ip头中的h_lenver表示ip头的长度和版本,一个字节,高4位是版本,低4为是长度。因为将长度保存到h_lenver字段时会向右释出2位(>> 2),所以IPLen需要乘4。proto==6表示当前通信使用的是IPV6协议,pkt_data+sizeof(ETHDR)+ IPLen获取tcp头。接着是从tcp头中获取源端口(SrcPort)和目标端口(...
回复

使用道具 举报

千问 | 2009-4-29 10:27:19 | 显示全部楼层
你买本书看看吧,在这光看解释没有意义...
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行