나는 많은 자식 프로세스를 만들고 있으며, 모든 자식은 모든 자식에 대해 다른 IP를 가진 arp 패키지를 만들고, 패키지를 보내고, 해당 IP를 가진 시스템으로부터 패키지를 받는다. 그 기계가 on.The 문제는 내가 올바르게 (내가 wireshark로 확인) 패키지를 보낼 수 있지만 왜, 내 모든 자식 프로세스가 동일한 패키지를 받을지 모르겠다.리눅스의 자식 recvfrom은 정상적으로 작동하지 않는다.
예를 들어 192.167.0.1,88.4.3.2와 100.20.3.20이 있습니다. 첫 번째 IP는 good.I는 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;
} 내가 뭔가를 확인 만 사용하는 정보 구조
탄트 것.
코드는 어디에 있습니까? – kmkaplan
일부 코드가 추가되었습니다. 소켓 때문일 수도 있습니까? –
원시 소켓에는 연결이 없으므로 수신자는 보낸 패킷과 관련된 패킷뿐만 아니라 모든 패킷을받습니다. – Barmar