Russian Qt Forum
Ноябрь 23, 2024, 18:09 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Проблема с QSslSocket  (Прочитано 3090 раз)
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" 

На сервере никаких ошибок не выводится.
Что я делаю неправильно?
Записан
navrocky
Гипер активный житель
*****
Offline Offline

Сообщений: 817


Погроммист


Просмотр профиля
« Ответ #1 : Ноябрь 26, 2012, 18:01 »

ConnectToHost тоже не сразу срабатывает, надо подождать...
Записан

Гугль в помощь
kryuch
Гость
« Ответ #2 : Декабрь 02, 2012, 16:48 »

ConnectToHost тоже не сразу срабатывает, надо подождать...

Всмысле? Он ведь пока не сработает не возвращает управление. Или это надо обрабатывать?
Подключение происходит, сервер его фиксирует, а дальше проблема уже
Записан
thechicho
Гость
« Ответ #3 : Декабрь 06, 2012, 14:31 »

почему socket->connectToHost("127.0.0.1", 3428);
а не socket->connectToHostEncrypted("127.0.0.1", 3428);
?
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.042 секунд. Запросов: 23.