用select检测socket是否”ready” struct fd_set rdfs;struct timeval tv = {5 , 0}; // 设置5秒时间while{ FD_ZERO(&rdfs); FD_SET(sockfd, &rdfs); if (select(sockfd+1, &rdfs, NULL, NULL, &tv) > 0) // socket就绪 { recv() / recvfrom() // 从socket读取数据 }}