В настоящее время я работаю в серверной программе в 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();
}