들어오는 패킷을 청취하기 위해 UDP 소켓을 열었습니다. wireshark 로그에서 NIC에 도달하는 패킷을 볼 수있었습니다. 그러나 Socket을 통해 읽을 때도 마찬가지입니다. 'netsatat'명령은 들어오는 UDP 메시지에 대해 포트 번호가 수신되는 것을 보여줍니다. 소켓 리더는 계속 대기합니다. 리눅스 (우분투) 환경에서 Java와 C를 사용하여 확인했습니다. 받은 IPV4 패킷의 Identification 값이 0임을 알 수 있습니다.이 값은 소켓에서 데이터를 읽는 역할을 할 수 있습니까? 소켓을 읽어 내 C 코드NIC에서 수신 한 패킷이 소켓을 통해 읽을 수 없음
int sock, n, nr;
socklen_t fromlen;
struct sockaddr_in server;
struct sockaddr_in from;
sock = socket(AF_INET, SOCK_DGRAM, 0);
if (sock < 0)
printf("Can not create socket in server\n");
memset(&server, 0, sizeof(struct sockaddr_in));
server.sin_family = AF_INET;
server.sin_port = htons(5555);
server.sin_addr.s_addr = INADDR_ANY;
if(bind(sock, (struct sockaddr *)&server, sizeof(server)) < 0)
fromlen = sizeof(struct sockaddr_in);
while(1) {
printf("Waiting to receive\n");
n = recvfrom(sock, &nr, sizeof(nr), 0, (struct sockaddr *) &from, &fromlen);
printf("I have received");
}
Wireshark를 추적 http://imgur.com/Au9BeS1
당신이하는 일을 보지 않고는 아무 말도 할 수 없습니다. 우리에게 보여주기 위해 [SSCCE] (http://sscce.org/)를 만드십시오. –
@JoachimPileborg가 추적 코드와 링크를 추가했습니다. 자세한 내용이 필요하면 알려주십시오. –