C ++中的非阻塞套接字 - 资源暂时不可用的错误

时间:2018-05-18 17:35:02

标签: c++ linux sockets tcp-ip

我目前正在使用linux中的服务器程序,该程序必须连接到单个客户端并且必须监听它以获取命令。一旦收到某个命令,我就必须发送一些值来回复客户端。这些值在main函数中生成,服务器程序在一个线程中运行。

所以,在这种情况下,我认为我必须实现非阻塞套接字。但我收到资源暂时不可用的错误。如果有人指出我进一步研究的方向,那将会有所帮助,因为我长期坚持这个实施。

这是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();
}

0 个答案:

没有答案