1 / 6
文档名称:

ARP协议的c语言实现源代码.doc

格式:doc   大小:26KB   页数:6页
下载后只包含 1 个 DOC 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

ARP协议的c语言实现源代码.doc

上传人:1542605778 2022/2/9 文件大小:26 KB

下载得到文件列表

ARP协议的c语言实现源代码.doc

文档介绍

文档介绍:ARP协议的c语言实现源代码【转载】 收藏
什么是ARP协议
英文原义:Address Resolution Protocol
中文释义:(RFC-826)地址解析协议
#include <>
#includS)");
exit(2);
}
if (!(&IFF_UP)) {
printf("Interface \"%s\" is down\n", if_dev);
exit(2);
}
if (&(IFF_NOARP|IFF_LOOPBACK)) {
printf("Interface \"%s\" is not ARPable\n", if_dev);
exit(2);
}
return ifindex;
} // check_device()
int socket_init()
{
int s, s_errno;
s = socket(PF_PACKET, SOCK_DGRAM, 0);
s_errno = errno;
= AF_PACKET;
= check_device(device, s);
= htons(ETH_P_ARP);
if (bind(s, (struct sockaddr*)&me, sizeof(me)) == -1) {
perror("bind");
exit(2);
}
int alen = sizeof(me);
if (getsockname(s, (struct sockaddr*)&me, &alen) == -1) {
perror("getsockname");
exit(2);
}
if ( == 0) {
printf("Interface \"%s\" is not ARPable (no ll address)\n", device);
exit(2);
}
he = me;
memset(, -1, ); // set dmac addr FF:FF:FF:FF:FF:FF
return s;
}
int
create_pkt(unsigned char * buf, struct in_addr src, struct in_addr dst, struct sockaddr_ll * FROM, struct sockaddr_ll * TO)
{
struct arphdr *ah = (struct arphdr*) buf;
unsigned char *p = (unsigned char *)(ah+1);
ah->ar_hrd = htons(FROM->sll_hatype);
if (ah->ar_hrd == htons(ARPHRD_FDDI))
ah->ar_hrd = htons(ARPHRD_ETHER);
ah->ar_pro