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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: QSslSocket::waitForEncrypted  (Прочитано 3261 раз)
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
Записан
ConConovaloff
Гость
« Ответ #1 : Март 30, 2013, 02:05 »

Если вы работаете под linux, то всегда приятно проверять работу почтовых серверов "общаясь с ними лично", по средством текста.

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

А вот mail.ru, почему то молчит.
Записан
OKTA
Гость
« Ответ #2 : Март 30, 2013, 02:12 »

Да, так тоже пробовал, но суть одна в итоге)
Записан
ConConovaloff
Гость
« Ответ #3 : Март 30, 2013, 02:28 »

Да, через почтовый клиент работает, я ошибся.
« Последнее редактирование: Март 30, 2013, 03:23 от ConConovaloff » Записан
OKTA
Гость
« Ответ #4 : Апрель 01, 2013, 12:12 »

абсолютно неизвестно, как все устроено в почтовом клиенте)))
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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