Получить данные из стандартного ввода во время прослушивания сокета - PullRequest
0 голосов
/ 21 июня 2019

Я работаю над программой клиент-сервер для отправки файлов (в linux). Клиент запрашивает файл с сервера, сервер отправляет его ему, а затем другой клиент может сделать это и т. Д.

Я хочу завершить программу, когда "exit" набрал в stdin. В этом случае сервер завершит работу и завершит работу программы. Моя проблема заключается в том, как справиться со случаем, когда сервер слушает сокет (с помощью функции listen ()) и вводит «exit». Я не знаю, как определить, что выход был набран, если мы в середине функции listen ().

listen(*mySocket, 3); 
int t; 
if ((t = accept(s,NULL,NULL)) < 0) {
    return -1;
}
return t;

-------
int S_checkQuit(int mySocket){
    fd_set rfds;
    struct timeval tv;
    tv.tv_sec=0;
    tv.tv_usec =0;
    FD_ZERO(&rfds);
    FD_SET(mySocket, &rfds);
    FD_SET(0, &rfds);
    int n = mySocket + 1;
    int rv = select(n, &rfds, NULL, NULL, &tv);
    if (rv){
        string cmd;
        getline(cin, cmd);
        if (cmd == "quit") {
            return 1;
        }
    }
    return 0;
}

Вот как я сейчас пополняю стандартный ввод в остальной части программы: я хочу найти способ поймать "выход", набрав.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...