免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1421 | 回复: 3
打印 上一主题 下一主题

以前用的好好代码 今天突然不好用了 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2009-03-25 17:07 |只看该作者 |倒序浏览
buflen=payload_len-(sizeof(struct iphdr)+sizeof(struct tcphdr));

        memset(buffer, 0x0, BUFSIZ);

        //bp等于原始数据段起始地址
        bp=payload;
        //求出数据段起始地址
        bp+=(sizeof(struct iphdr)+sizeof(struct tcphdr));


//取得数据
        memcpy(buffer, bp, buflen);
        buffer[buflen]='\0';
        printf("buffer=%s\n", buffer);


以上代码已经无法取得数据段了。 payload指向ip头  payload_len是整个载荷的长度

论坛徽章:
0
2 [报告]
发表于 2009-03-25 18:54 |只看该作者
无责任猜想,数据包里ip或者tcp header里有option,不是20字节
所以不能直接用sizeof(struct iphdr)来计算

论坛徽章:
0
3 [报告]
发表于 2009-03-25 20:22 |只看该作者
sizeof的时候有没有考虑结构体的字节对齐方式? 可能sizeof的值并不是你期望得到的字节数

论坛徽章:
0
4 [报告]
发表于 2009-03-26 12:46 |只看该作者
原帖由 caijimin 于 2009-3-25 18:54 发表
无责任猜想,数据包里ip或者tcp header里有option,不是20字节
所以不能直接用sizeof(struct iphdr)来计算


对头!
应截取报头中的长度信息而不是用sizeof.

[ 本帖最后由 JohnBull 于 2009-3-26 12:47 编辑 ]
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP