c++ - C++ 中的非阻塞套接字 - 资源暂时不可用错误
问题描述
我目前正在linux中的一个服务器程序中工作,它必须连接到一个客户端并且必须听它的命令。一旦它收到某个命令,我必须发送一些值作为回报给客户端。这些值在主函数中生成,服务器程序在线程中运行。
所以,在这种情况下,我认为我必须实现非阻塞套接字。但我收到资源暂时不可用错误。如果有人指出我进一步研究的方向,那将很有帮助,因为我在这个实现中停留了很长时间。
这是while循环代码,
void server::serve() {
struct sockaddr_in clientAddress;
socklen_t sin_size;
sin_size = sizeof(struct sockaddr_in);
if(client = accept(sockId,(struct sockaddr *)&clientAddress,&sin_size) == -1){
perror("accept");
}
fcntl(sockId,F_SETFL,O_NONBLOCK);
fcntl(client,F_SETFL,O_NONBLOCK);
while (1) {
if(client = accept(sockId,(struct sockaddr *)&clientAddress,&sin_size) == -1){
perror("accept");
}
cout <<"client "<<client<<endl;
fcntl(client,F_SETFL,O_NONBLOCK);
getMessage(client);
if(transmitFlag != -1)
sendRequest(client);
}
closeSocket();
}
解决方案
推荐阅读
- javascript - 无法从委托函数访问类属性
- python - 使用 CNN+LSTM 模型和 TimeDistributed 层包装器的 Keras 时间序列预测
- mysql - 如何在 typeorm 中建立 OneToMany 关系?
- kendo-ui - 从选定的计划项目中获取选定的标题和描述信息
- vim - VSCode Vim 搜索和替换捕获组
- python - 将作为序数的字母和数字组合在一起
- android - 如何在Android Q(10)中以编程方式访问剪贴板数据?
- google-cloud-dataflow - FileIO.read() 性能很差
- java - 尝试解决它,但没有将任何内容打印到控制台
- python - 如何从 Alpha Vantage API 中提取数据?