1

我需要知道 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 地址。

4

1 回答 1

1

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

点击这里:

同样的问题

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

于 2013-01-10T12:03:43.040 回答