私はたくさんの子プロセスを作成しています。すべての子は、子ごとに異なる IP を持つ arp パッケージを作成し、パッケージを送信し、マシンがオンの場合は対応する IP を持つマシンからパッケージを受信する必要があります。パッケージを正しく送信します(wiresharkでこれを確認します)が、理由はわかりません。すべての子プロセスが同じパッケージを受け取ります。
たとえば、192.167.0.1,88.4.3.2 と 100.20.3.20 があります。最初の IP だけが適切です。3 つの子プロセスがあり、それぞれが要求を送信し、応答を 8000000 ナノ秒待ちます。唯一の応答は、最初の IP (正しいため) ですが、すべての子供がこのパッケージを受け取る理由がわかりません。何か提案はありますか? これがコードの一部です。wireshark でテストしたので、パッケージが正しく送信されると確信しています。
if (sendto(sock,&req,sizeof(req),0,(struct sockaddr*)&addr,sizeof(addr))==-1) {
printf("%s",strerror(errno));
}
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;
}
else{
info.status=1;
}
何かをチェックするためだけに使用する情報構造体に感謝します。