首页 > 解决方案 > 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();
}

标签: c++linuxsocketstcp-ip

解决方案


推荐阅读