想要退出accept的方式两种:
- 有新用户连接
- timeout
recv有三种:
- 读到数据
- timeout
- fd close
下面就是依据timeout来做的退出。
重点:
struct timeval timeout={3,0};//timeout 3s.
int ret = setsockopt(fd, SOL_SOCKET, SO_RCVTIMEO, &timeout,
sizeof(timeout));
if (ret < 0) {
printf("set fd timeout failed!\n");
}
按需求更换fd,从而使得accept或者recv退出。