ARP応答の送信者のIPアドレスを知る必要があります。recvfromを使用してみましたが、IPアドレスを取得できません。ご協力いただきありがとうございます。
それぞれがARP要求をIPアドレスに送信する子プロセスがいくつかあります。問題は、ソケットが未加工であるために応答がすべての子に届くため、応答がどの子に到着したかを何らかの方法で知る必要があることです。
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アドレスしか取得できません。