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