-
在网络通讯中,有很多函数是阻塞函数,使进程阻塞。例如 accept recv send recvfrom sendto等
-
为了避免进程在阻塞函数处无限制阻塞,可以设置超时时间,当超时后从阻塞函数立即返回,继续运行。
1. select poll
ret = select(maxfd+1, &tempfds, NULL, NULL, &tv); if(ret < 0) { ERR_MSG("select"); return -1; } else if(0 == ret) { printf("超时了....\n"); continue; } ------------------------------------------------------------------ ret = poll(fds, 2, 3000); if(ret < 0) { ERR_MSG("poll"); return -1; } else if(0 == ret) { printf("超时了....\n"); continue; }
2. setsockopt
//设置发送超时接收超时 struct timeval