Russian Qt Forum

Qt => Работа с сетью => Тема начата: kryuch от Ноябрь 25, 2012, 22:46



Название: Проблема с QSslSocket
Отправлено: kryuch от Ноябрь 25, 2012, 22:46
Добрый день.

Создал SSL-сервер SslServer:: public QTcpServer
Код:
void SslServer::incomingConnection(int handle)
{
    socket = new QSslSocket(this);
    if (socket->setSocketDescriptor(handle))
    {
        qDebug()<<"yes\t"<<socket;
        connect(socket, SIGNAL(encrypted()), this, SLOT(on_encrypted()));
        connect(socket, SIGNAL(readyRead()), this, SLOT(on_dataRead()));
        connect(socket, SIGNAL(sslErrors(QList<QSslError>)), this, SLOT(on_sslErrors(QList<QSslError>)));
        connect(socket,SIGNAL(disconnected()),this,SLOT(slotTCPServerDisconnected()));
        connect(socket,SIGNAL(readyRead()),this,SLOT(slotTCPServerReadyRead()));
        socket->setPrivateKey("/opt/terminus/share/cert/server.key", QSsl::Rsa);
        socket->setLocalCertificate("/opt/terminus/share/cert/server.crt");

        socket->startServerEncryption();
        emit message("New connection...\r\n");
        foreach(QSslError err, socket->sslErrors())
        {
            emit message(QString(err.errorString()).append("\r\n"));
        }

    }
    else delete socket;
}

при попытке подключиться
Код:
    socket = new QSslSocket();
    connect(socket, SIGNAL(connected()), SLOT(waitForGreeting()));
    connect(socket, SIGNAL(readyRead()), SLOT(readResponse()));
    connect(socket, SIGNAL(connectionClosed()), SLOT(quit()));
    connect(socket, SIGNAL(delayedCloseFinished()),SLOT(quit()));
    socket->setPrivateKey("/opt/terminus/share/cert/server.key", QSsl::Rsa);
    socket->setLocalCertificate("/opt/terminus/share/cert/server.crt");
    socket->connectToHost("127.0.0.1", 3428);

    if (!socket->waitForEncrypted()) {
     qDebug() << socket->errorString();
    }
    else
    {
        socket->write("GET / HTTP/1.0\r\n\r\n");
        while (socket->waitForReadyRead())
            qDebug() << socket->readAll().data();
    }

выдается
Код:
"Unknown error" 

На сервере никаких ошибок не выводится.
Что я делаю неправильно?


Название: Re: Проблема с QSslSocket
Отправлено: navrocky от Ноябрь 26, 2012, 18:01
ConnectToHost тоже не сразу срабатывает, надо подождать...


Название: Re: Проблема с QSslSocket
Отправлено: kryuch от Декабрь 02, 2012, 16:48
ConnectToHost тоже не сразу срабатывает, надо подождать...

Всмысле? Он ведь пока не сработает не возвращает управление. Или это надо обрабатывать?
Подключение происходит, сервер его фиксирует, а дальше проблема уже


Название: Re: Проблема с QSslSocket
Отправлено: thechicho от Декабрь 06, 2012, 14:31
почему socket->connectToHost("127.0.0.1", 3428);
а не socket->connectToHostEncrypted("127.0.0.1", 3428);
?