我打开了一个 UDP 套接字来监听传入的数据包。我可以在 wireshark 日志中看到到达 NIC 的数据包。但是通过 Socket 读取时不可用。'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