Как клиент QTcpSocket может понять, что он находится в очереди?(и не переходит в подключенное состояние) - PullRequest
0 голосов
/ 26 марта 2019

Я занимаюсь разработкой проекта сервера и клиента с помощью Qt.Я хочу напечатать статус подключения для пользователей.Для этого я использую state (), например:

socketState = mySocket.state();

if (socketState == 3) {
   Print("we have connected");
}

Однако он не работает, когда сервер ставит новые очереди в очередь.Чтобы было понятно, состояние моего клиента равно 3, даже если сервер приостановил прием новых подключений:

//server side: 
myServer->pauseAccepting();

//client side: 
connectToHost()
socketState = mySocket.state();

Теперь socketState равен 3 вместо 0 или специальному номеру для состояния очереди.

Подводя итог, я хочу знать, как сообщить клиенту, что он находится в очереди?Есть ли что-то вроде state (), которое имеет возвращаемое значение для состояния очереди?

1 Ответ

0 голосов
/ 29 марта 2019

Наконец-то я смог найти ответ.

Отклоненный клиент, который идет в очередь (по ОС), не отличается от других клиентов. Поэтому мы можем сделать для него специальный сокет (что означает, что он больше не находится в очереди) и начать связь (сообщить и закрыть).

например:

QTcpSocket clientSocket
QTcpSocket queueSocket

В моем проекте сервер сначала отправляет сообщение клиенту очереди. Сообщение:

«Мы НЕ МОЖЕМ принять нового клиента, потому что НЕ МОЖЕМ обрабатывать более одного» Итак, он знает, в чем проблема.

Затем сервер закрывает клиентский сокет очереди.

Мы ДОЛЖНЫ закрыть его, потому что НЕ хотим работать с большим количеством клиентов.

Однако главное в том, что мы можем работать с клиентами в очереди и решать, как с ними обращаться. Я предпочитаю принимать их, просто чтобы сообщить и закрыть их.

if (we have NOT a client) {
    work with clientSocket
}
else {
    queueSocket.wirte("We can NOT accept a new client because we can NOT handle more than one")
    close queueSocket
}

Надеюсь, это поможет тем, кто хочет информировать отклоненных клиентов.

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