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);
效果:

本文介绍了如何在Linux环境中实现非阻塞的Socket服务器,详细阐述了非阻塞方法,并展示了如何在创建和接受客户端连接时设置Socket为非阻塞模式。通过这种方式,服务器能够更高效地处理多个并发连接。
订阅专栏 解锁全文
969

被折叠的 条评论
为什么被折叠?



