Qt - простой Http-сервер - PullRequest
       80

Qt - простой Http-сервер

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

Я написал простой Http-сервер (только для получения и анализа запросов).Но, похоже, он не работает должным образом: иногда я получаю сообщение об ошибке «Нарушение прав доступа (c0000005)»

UPD: я следовал советам и изменил источник:

Server::Server()
{
    tcpServer = new QTcpServer();
    if (!tcpServer->listen(QHostAddress::Any, 1111)) {
        return;
    }

    QObject::connect(tcpServer, &QTcpServer::newConnection, [=]() {
        QTcpSocket *clientSocket = tcpServer->nextPendingConnection();
        QObject::connect(clientSocket, &QTcpSocket::disconnected, clientSocket, &QTcpSocket::deleteLater);

        QObject::connect(clientSocket, &QTcpSocket::readyRead, [this, clientSocket]() {
            const QString line = QUrl::fromPercentEncoding(clientSocket->readLine());
            clientSocket->disconnectFromHost();
            const QStringList tokens = QString(line).split(QRegExp("[ \r\n][ \r\n]*"));


            if (parseParams(tokens)) {
                emit Server::newRequest(params);
            }
        });
    });
}

Будет ли этокод никогда не выдает ошибку «Нарушение прав доступа (c0000005)»?

1 Ответ

2 голосов
/ 12 марта 2019

Это не отвечает на ваш вопрос, но вы можете рассмотреть вопрос об использовании официального разрабатываемого HTTP-сервера Qt.

код: http://code.qt.io/cgit/qt-labs/qthttpserver.git/

объявление: https://blog.qt.io/blog/2019/01/25/introducing-qt-http-server/

...