使用WinPcap抓取ARP数据包,其中定义ARP数据包结构体如下:
typedef struct ArpPacket
{
u_int16_t macaddrtype;
u_int16_t proaddrtype;
u_int8_t macaddrlen;
u_int8_t proaddrlen;
u_int16_t operationtype;
u_int8_t srcmac[6];
struct in_addr srcip;// u_int8_t srcip[4];定义为字符数组能正确输出
u_int8_t dstmac[6];
struct in_addr dstip;//u_int8_t dstip[4];
}AP;
在源程序中读取协议字段内容:
......
p=parp->srcmac;
printf("源MAC:%02x:%02x:%02x:%02x:%02x:%02x/n",p[0],p[1],p[2],p[3],p[4],p[5]);
p=parp->dstmac;
printf("源ip:%s/n",inet_ntoa(parp->srcip));// 出错
printf("目的MAC:%02x:%02x:%02x:%02x:%02x:%02x/n",p[0],p[1],p[2],p[3],p[4],p[5]);
printf("目的ip:%s/n",inet_ntoa(parp->dstip));//出错
结果:源MAC地址能正确输出,但输出源IP地址时,跳过2个字节,输出后面4个字节内容;后
面目的MAC地址输出往后6个字节,输出目的IP时,又跳过2个字节,输出后面4个字节!
但当把源IP定义为"u_int8_t srcip[4];"时就能正确输出;
然而,IP数据包首部最后两个字段为源IP和目的IP,都定义为struct in_addr类型,可以正确
输出IP地址;我将ARP数据包的两个IP地址字段移到ARP数据包结构体最后2个字段,也能正确
输出!
我现在的想法是:struct in_addr类型字段不能放在结构体中间,放在最后可以,但不知道具
体原因。
PS:
2010-08-09 补充
这是由于定义结构体时,字节对齐问题。
分享到:
相关推荐
草稿纸软件对视图区域各种信息进行保存,不会丢失信息,文件保存到本地,也不会泄露信息 草稿纸软件实现输入文字的白色区域透明,文字本身也可以设置透明度,文字不会与图片或其他内容混色,输入体验巨爽,视口效果...
这篇个人草稿似乎涉及到的是某个人在进行项目开发过程中,关于事项记录和交接的细节。虽然标题没有提供太多技术性的信息,但我们可以推测这可能是一个程序员或IT专业人员的工作习惯,他们通过文档记录工作进度和待办...
在编写长文或者编辑内容时,自动保存草稿的功能显得尤为重要,因为它可以防止由于网络问题、浏览器崩溃或用户意外关闭页面而导致的数据丢失。 在实现Ajax自动保存草稿的过程中,主要涉及以下几个关键知识点: 1. *...
以下是一步一步教你如何在CSDN上复制他人博客文章的详细过程。 首先,你需要确保你有一个属于自己的CSDN账号,因为只有登录后才能创建和编辑博客。如果你还没有账号,访问CSDN官网完成注册和验证。 1. **查找喜欢...
3. **问题解答与提问**:整合CSDN的问答系统,用户可以在IDEA内提问或查看已有的问题及其答案,获取技术帮助。 4. **同步CSDN博客**:如果开发者在CSDN上有个人博客,插件可能提供同步博客草稿或发布新文章的功能,...
它提供了浏览文章列表、查看评论数量、阅读次数等基本功能,并且支持用户发布文章和保存草稿,旨在为CSDN用户带来更加便捷的博客管理体验。随着开发的推进,该客户端将会不断更新和完善,增加更多实用的功能。 1. *...
1. **搜索优化**: 可能提供快速搜索功能,使用户能在CSDN站内快速找到所需的技术文章或问题解答,甚至支持自定义搜索引擎。 2. **阅读增强**: 可能包括去除广告、调整字体大小、夜间模式等,提升阅读体验。 3. **...
在Android操作系统中,草稿是...同时,开发者还应考虑到不同Android版本间的兼容性问题,因为不同版本可能有不同的行为和API使用方式。测试是确保修复有效的重要环节,应该在各种设备和Android版本上进行充分的测试。
Markdown编辑器是一种轻量级的标记语言,允许...需要注意的是,尽管浏览器存储提供了方便的离线编辑功能,但出于数据安全考虑,建议用户在联网后及时将文章发表或者保存到服务器草稿箱中,以防止可能的数据丢失或损坏。
此外,"csdn博客助手"可能还包含其他未在描述中明确列出的实用功能,例如自动保存草稿、一键排版、代码高亮、模板选择等。自动保存功能可以在突发断电或系统故障时保护用户的劳动成果,避免因意外导致的数据丢失。...
在IT行业中,CSDN(China Software Developer Network)是一个广受欢迎的中文开发者社区,它提供了丰富的技术资源和交流平台。富文本编辑器是CSDN博客系统中的一个重要组成部分,它使得用户可以方便地创建和编辑内容...
【标题】"csdn_java.zip" 是一个Java编程相关的压缩包,主要包含了某位开发者或学生进行课程设计时的作品——一个使用数据库连接池实现的宿舍管理系统。这个系统可能用于高校管理学生的住宿信息,提高管理效率。 ...
该工具经过博主本人亲测,是我在卸载Adobe Acrobat的过程中用到的一款工具,相关细节已经记载到博客:https://xiexu.blog.csdn.net/article/details/141434532 (该链接目前在草稿箱,预计将于2025年公布,请见谅)...
2. 软件开发生命周期:从文件中的版本历史记录可以看出,软件开发生命周期包括了多个阶段,例如草稿、正式发布、修改等阶段。这些阶段都是软件开发生命周期的重要组成部分。 3. 需求规定:在软件设计中,需求规定是...
- **学术写作**:科研人员可以用MWeb撰写论文草稿,利用Markdown的数学公式功能处理复杂的数学表达式。 - **博客创作**:博主可以借助MWeb的预览和模板功能,快速编写和格式化博客文章,然后一键发布到静态博客平台...
剪映专业版 V 3_2_0_8778_beta9是剪映的早期版本,应该是不需要VIP用户的最高版本。...只要不打开高版本编辑的草稿,不会自动更新。 原文链接:https://blog.csdn.net/AnChenliang_1002/article/details/139426197
另外,“邮件图片能储存”表示该软件可能内置了发送截图至邮件的功能,用户可以直接将截图保存到邮件草稿或者附件中,方便分享给他人。 从压缩包内的文件名称列表来看,"Setuna.exe"很可能是该截图软件的主执行文件...
这个项目可能包含了【捕获.PNG】和【untitled1】两个文件,前者可能是博客页面的截图,后者可能是草稿或未命名的文件,具体用途需要根据文件内容来判断。 总的来说,通过Django构建个人博客,我们可以深入理解Web...
综合以上信息,我们可以进一步讨论源码超市的运作模式,例如,它如何处理版权问题,如何保障交易的安全与公平,以及开发者如何通过上传自己的源码获利。同时,我们还可以探讨目录设计的最佳实践,如何通过有效的分类...
在【eti-master】这个文件夹中,可能包含了项目的所有源代码、设计图纸、实验数据、报告草稿等,是研究该团队解决方案的重要资源。对于其他参赛者或对此感兴趣的读者,通过深入研究这些资料,可以学习到实际的工程...