我正在使用原始套接字通过recvFrom() 在C 中发送和接收以太网数据包。我想以非阻塞模式读取,所以我使用 MSG_DONTWAIT。但无论是否收到数据包,recvFrom() 始终返回 -1。我是 C 编程新手。我能够接收我的有效负载,但总是收到消息“接收资源暂时不可用”。
代码片段:
if ((sock = socket(AF_PACKET, SOCK_RAW, htons(0x8851))) < 0) {
perror("ERROR: Socket");
exit(1);
}
while(1) {
int flag=0;
n=recvfrom(sock, buffer, 2048, MSG_DONTWAIT, NULL, NULL);
if (n == -1) {
perror("ERROR: Recvfrom");
close(sock);
flag=1;
}
if (flag==0) {
// Read Packet
}
}
Run Code Online (Sandbox Code Playgroud)