着信パケットをリッスンするために UDP ソケットを開きました。Wireshark のログで、NIC に到達するパケットを確認できました。ただし、ソケットを介して読み取る場合は同じことはできません。「netsatat」コマンドは、ポート番号が着信 UDP メッセージをリッスンしていることを示しています。ソケット リーダーは待機し続けます。Linux(ubuntu)環境でJavaとCを使用して確認しました。受信した IPV4 パケットの識別値が 0 であることを確認できます。この値は、ソケットがデータを読み取るために何らかの役割を果たすことができますか? ソケットを読み取るための私の C コード
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