/
MaximU
/
application
Обзор
Документация
Войти
/
MaximU
/
application
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
tcpconnectionserver.cpp
67 строк
2 KB
Максим
Упорядочены #include-ы.
15 июл 2026, 22:13
15 июл 2026, 22:13
ee4913b
Код
Авторство
О чём код?
#include "tcpconnectionserver.h" #include <QTcpSocket> #include "tcpconnectionclient.h" /*! * \brief Конструктор. * \param id Идентификатор соединения. * \param name Имя соединения. * \param label Метка соединения. */ TcpConnectionServer::TcpConnectionServer(int id, const QString &name, const QString &label) : ConnectionServer(id, name, label) { connect(&mServer, &QTcpServer::newConnection, this, &TcpConnectionServer::slot_server_newConnection); } /*! * \brief Деструктор. */ TcpConnectionServer::~TcpConnectionServer() { mServer.close(); } /*! * \brief Открывает соединение и осуществляет попытку соединения. */ void TcpConnectionServer::open() { ConnectionServer::open(); mServer.listen(QHostAddress::Any, mPort); } /*! * \brief Закрывает соединение. */ void TcpConnectionServer::close() { mServer.close(); // Отключение всех соединений. ConnectionServer::close(); } /*! * \brief Вызывается при подключении сокета. */ void TcpConnectionServer::slot_server_newConnection() { static int count = 0; // Сквозной счетчик числа подключений. QTcpSocket *socket = mServer.nextPendingConnection(); if (socket != nullptr) { // Деструктор класса QObject (от которого произведен QTcpServer) удаляет все объекты, родителем которых он является (QTcpServer является родителем QTcpSocket). Т.к. класс ConnectionServer сам удаляет клиентские соединения, этого следует избежать установкой родительского объекта сокета в 0. socket->setParent(0); TcpConnectionClient *connection = new TcpConnectionClient(mId | (++ count), "", "", socket); connection->mTimeConnect = QDateTime::currentDateTime(); connection->mAddress = socket->peerAddress().toString(); newConnection(connection); } }