arp包封装时的问题
void make_arp(struct ether_arp *arp,int op,u_char *arp_sha,u_char *arp_spa,u_char *arp_tha,u_char *arp_tpa)
{
// printf("nnnnnhello.worldnnnnn");
arp->ea_hdr.ar_hrd=htons(ARPHRD_ETHER);
// printf("nnnnnhello.worldnnnnn");
arp->arp_pro=htons(ETHERTYPE_IP);
arp->arp_hln=6;
arp->arp_pln=4;
arp->arp_op=htons(op);
memcpy(arp->arp_sha,arp_sha,6);
memcpy(arp->arp_spa,arp_spa,4);
memcpy(arp->arp_tha,arp_tha,6);
memcpy(arp->arp_tpa,arp_tpa,4);
}
以上是我写的一个程序片段,程序可以编译运行,但是到了这段时候会出现 段错误 .我做了个测试,就是上面的2个printf,当只有第一句的时候是可以打出来的,打出来以后就出现段错误了,如果只有后面一个printf的话,就不能打印出来了,只有出现 段错误 了,所以该函数的第一句话是肯定有问题的,第一句话我用过两种写法实验,第一种就是大家上看到的,还有一种是 arp->arp_hrd=htons(ARPHRD_ETHER);两种写法都会出现我上面描述出现的情况,不知道那位有写过ARP包封装的指点下?
[ 本帖最后由 sm19830927 于 2006-4-8 22:31 编辑 ]
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
这和printf 无关,检查一下你个各个结构体是否都分配空间了.