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。如果是超时,超时就想做什么就做什么。
我运行这段代码好几次(对于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。如果是超时,超时就想做什么就做什么。