我目前正在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();
}