QTcpServer вылетает при закрытии

Я программировал сервер, я программировал сервис и менеджер. Когда я останавливаю сервер с помощью UI Server Manager, сервер вызывает функцию "stopServer()", которая содержит следующее:

qDebug() << "Stopping the server...";
// Clear the vector and free the memory by deleting pointers
qDebug() << clients.size();
for(int i=0;i<clients.size();i++){
    clients.get(i)->getSocket()->flush();
    clients.get(i)->getSocket()->close();
    clients.get(i)->getSocket()->disconnectFromHost();
    clients.get(i)->getSocket()->waitForDisconnected(3);
}
clients.destroy();
// Close the server
socket_server->close();
// Stop the handler
qDebug() << "Stopped.";

Фактически, эта переменная "клиенты" - это всего лишь вектор, содержащий пользовательские данные, он закрывает QTcpSocket для каждого соединения, а затем очищает переменную клиентов и сбрасывает ее в 0.

Когда у меня есть одно соединение на сервере (UI Manager работает как одно из этих соединений), и я пытаюсь остановить его, оно терпит неудачу. Я удалил эту векторную систему. И это все еще не работает, это не дает мне никакой ошибки, просто вылетает приложение.

Если вам нужен весь код, просто скажите мне!

(Извините за мой плохой английский...)

Обновление: если я удаляю "socket_server->close()", это работает без проблем. Обновление № 2: Кажется, это проблема удаления указателя. ИДК....

РЕШЕНО: Боже, я был тупым! socket_server был нулевым указателем... Я только что исправил это, и все!

1 ответ

Решение

Боже, я был тупым! socket_server был нулевым указателем... Я только что исправил это, и все!

Другие вопросы по тегам