1.非阻塞方法
//设置socket为非阻塞
void setSocketNotBlock(int sockfd){
int flag = fcntl(sockfd,F_GETFL,0);//获取阻塞标志
fcntl(sockfd,F_SETFL,flag|O_NONBLOCK);//设置阻塞标志
}
2.在创建SOCKET与接受客户端连接的SOCKET对象设置非阻塞
int sockfd = ::socket(AF_INET,SOCK_STREAM,IPPROTO_TCP);
if(-1 == sockfd){
cout<<"创建socket失败"<<endl;
return 1;
}
//设置socket非阻塞
setSocketNotBlock(sockfd);
clientfd = ::accept(sockfd, reinterpret_cast<sockaddr *>(&cAddr), &clen);
//设置socket非阻塞
setSocketNotBlock(clientfd);
效果: