阅读:2024回复:5
大神们,求助啊
我把一个封包的内容全部拷贝到pPacketContent中。然后输出里面的源IP,目的IP,和协议类型
但是目的IP的内容和协议类型的内容是一样的?我截了图。 在PtReceive中加入的代码 if(pPacketContent[12] == 8 && pPacketContent[13] == 0 ) { DbgPrint("判断是否为以太包。如果为==8&&==6为ARP包\n"); pIPHeader = (PIP_HEADER)(pPacketContent+IP_OFFSET); DBGPRINT("nSourIp源IP: %2x\n",pIPHeader->nSourIp); DBGPRINT("MDip目的IP: %u\n",pIPHeader->nDestIp); DBGPRINT("bProtocol: %u\n",pIPHeader->bProtocol); pIPHeader 是结构体变量。IP_OFFSET=14 难道我本身就没有获取到全部的数据吗? 描述:图片 图片:QQ截图20130306165251.jpg 大哥们,帮忙看一下 |
|
沙发#
发布于:2013-03-06 19:05
还有就是以这样的格式打印出来协议类型都是很长的数字
DBGPRINT("协议类型 %d: %d\n",pPacketContent[12],pPacketContent[13]); 输出的结果是:-2115457168: 1 还有一些输出结果和这样的数字类似 像协议类型不都是整型的吗。为什么还有负数或者其他这么长的数字,好像都是随机的。 |
|
板凳#
发布于:2013-03-08 17:04
没看懂, 最好打印十六进制
|
|
|
地板#
发布于:2013-03-08 21:44
回 iihacker 的帖子
iihacker:没看懂, 最好打印十六进制 (2013-03-08 17:04) 上面的问题已经解决了,谢谢了你啦 现在又另外一个问题了 typedef struct _IP_HEADER { UINT bVerAndHLen ; UINT bTypeOfService ; USHORT nTotalLength ; USHORT nID ; USHORT nReserved ; UINT bTTL ; UINT bProtocol ; USHORT nCheckSum ; UINT nSourIp ; // 源IP32bit UINT nDestIp ; // 目的IP32bit } IP_HEADER, *PIP_HEADER ; 上面这个结构体,我想把源IP和 目的IP打印出来。用了很多的格式打印都是乱码,能告诉我用什么格式打印吗? DbgPrint("源IP地址...\n"); DbgPrint("%d.%d.%d.%d\n",pIP_header->nSourIp); DbgPrint("目的IP地址...\n"); DbgPrint("%d.%d.%d.%d\n",pIP_header->nDestIp); 是这样吗? |
|
地下室#
发布于:2013-04-19 15:17
0x%08x
|
|
|
5楼#
发布于:2013-04-19 15:18
DbgPrint("源IP地址...\n");
DbgPrint("%d.%d.%d.%d\n",pIP_header->nSourIp); DbgPrint("目的IP地址...\n"); DbgPrint("%d.%d.%d.%d\n",pIP_header->nDestIp); 你还是按照printf格式写吧,%d 个数和后面对不起来 |
|
|