ARP消息如何获取IP

时间:2013-01-10 11:45:38

标签: c linux arp

我需要知道ARP回复的发件人的IP地址。我尝试使用recvfrom但我无法从中获取IP地址。谢谢你的帮助。

我有一些子进程,每个进程都向一个IP地址发送ARP请求。问题是响应来自所有的孩子,因为套接字是原始的,所以我需要以某种方式知道响应到达的孩子。我试过

struct sockaddr_ll linkLayerAddr;
char buf[32];
int sockaddr_len=sizeof(linkLayerAddr);
memset(&linkLayerAddr,0,sizeof(linkLayerAddr));
fcntl(sock,F_SETFL,O_NONBLOCK);
nanosleep(&time1,NULL);

if(recvfrom(sock,buf,sizeof(buf),0,(struct sockaddr*)&linkLayerAddr,&sockaddr_len)==-1){

info.status=0; 
}//se primeste raspunsul
else{
info.status=1;

}

我等待800000纳秒的回复,我想知道消息来自哪个IP。有了recvfrom我只能得到MAC地址。

1 个答案:

答案 0 :(得分:1)

埃米尔,我已经回答了同样的问题。

点击此处:

Same question

如果你不喜欢这个答案,我们来讨论一下,但是避免用相同的主题打开新问题