慕森卡
给recv() 设个timeout, 过了这个时间就返回超时的错误,不要RECV一直阻塞在那里.timeout 可以自己做一个。下面是 google 弄得一段例子。struct timeval tv; /* timeval and timeout stuff added by davekw7x */int timeouts = 0;tv.tv_sec = 3;tv.tv_usec = 0;if (setsockopt(sockfd, SOL_SOCKET, SO_RCVTIMEO, (char *)&tv, sizeof tv)){perror("setsockopt");return -1;}if (connect(sockfd, (struct sockaddr *)&their_addr, sizeof their_addr) == -1) {perror("connect");exit(1);}while (((numbytes=recv(sockfd, buf, MAXDATASIZE-1, 0)) == -1) && (++timeouts < 1000)) { /* loop to retry in case it timed out; added by davekw7x */perror("recv");printf("After timeout #%d, trying again:\n", timeouts);}printf("numbytes = %d\n", numbytes);buf[numbytes] = '\0';printf("Received: %s",buf);