recvfrom:资源暂时不可用。为什么?

recvfrom: Resource temporarily unavailable. Why?

我运行这段代码好几次(对于UDP套接字上的非阻塞recvfrom):

struct timeval read_timeout;
read_timeout.tv_sec = 0;
read_timeout.tv_usec = 1000;
setsockopt(sockfd, SOL_SOCKET, SO_RCVTIMEO, &read_timeout, sizeof read_timeout);
ssize_t n = recvfrom(sockfd, recvline, sizeof(recvline), 0, NULL, NULL);
if (n < 0) {
    perror("recvfrom");
    return -1;
} else // ... normal usage

有时程序停止,我从 perror

收到以下错误

recvfrom: Resource temporarily unavailable

可能是什么问题?

只需修改代码即可执行您想要的操作。当您遇到错误时,不要无条件地调用 perror,而是检查它是否超时。如果不是超时,则调用 perror 和 return。如果是超时,超时就想做什么就做什么。