Russian Qt Forum

Qt => Работа с сетью => Тема начата: OKTA от Март 29, 2013, 19:48



Название: QSslSocket::waitForEncrypted
Отправлено: OKTA от Март 29, 2013, 19:48
Товарищи! Вопрос на засыпку! Как думаете, почему происходит следующее непонятное действо?
Есть два сервера imap.mail.ru и imap.rambler.ru. Соединяюсь с ними по порту 993, используя QSslSocket.
При этом, сервер рамблера работает как надо - соединение, обмен ключами и приходит сигнал readyRead().
Если же использовать сервер мэйла, то все так же, за исключением того, что сигнал readyRead() не приходит.

Если же убрать секцию с waitForEncrypted, то все ок, сигнал приходит! В чем может быть засада?
main.cpp ::
Код:
#include <QtCore/QCoreApplication>
#include <QtNetwork/QSSlSocket>

int main(int argc, char *argv[])
{
    QCoreApplication a(argc, argv);

    QSslSocket socket;
    socket.connectToHostEncrypted("imap.mail.ru", 993);
    //socket.connectToHostEncrypted("imap.rambler.ru", 993);

    if(socket.waitForEncrypted(2000)) {
        //

        qDebug() << "Ssl handshake complete";
    } else {
        //

         qDebug() << "Ssl handshake not complete";
    }

    if (socket.waitForConnected(2000)) {
        //

        qDebug() << "Connected";
    } else {
        //

        qDebug() << "Timeout";
    }

    if (socket.waitForReadyRead(28000)) {
        //

        qDebug() << "ReadyRead";
    } else {
        //

        qDebug() << "Server in Silence";
    }

    return a.exec();
}

testSocket.pro ::

Код:
#-------------------------------------------------
#
# Project created by QtCreator 2013-03-29T20:30:17
#
#-------------------------------------------------

QT       += core network

QT       -= gui

TARGET = testSocket
CONFIG   += console
CONFIG   -= app_bundle

TEMPLATE = app


SOURCES += main.cpp


Название: Re: QSslSocket::waitForEncrypted
Отправлено: ConConovaloff от Март 30, 2013, 02:05
Если вы работаете под linux, то всегда приятно проверять работу почтовых серверов "общаясь с ними лично", по средством текста.

К примеру для рамблера, это:
Код:
openssl s_client -connect imap.rambler.ru:993
а после приветствия, команда авторизации:
Код:
a001 LOGIN mylogin@rambler.ru mypass
на что почтовые сервера должны отвечать "a001 OK", в случае успешной авторизации.

А вот mail.ru, почему то молчит.


Название: Re: QSslSocket::waitForEncrypted
Отправлено: OKTA от Март 30, 2013, 02:12
Да, так тоже пробовал, но суть одна в итоге)


Название: Re: QSslSocket::waitForEncrypted
Отправлено: ConConovaloff от Март 30, 2013, 02:28
Да, через почтовый клиент работает, я ошибся.


Название: Re: QSslSocket::waitForEncrypted
Отправлено: OKTA от Апрель 01, 2013, 12:12
абсолютно неизвестно, как все устроено в почтовом клиенте)))