Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум на CrossPlatform.RU _ Qt Ввод/Вывод, Сеть. Межпроцессное взаимодействие _ Подключение к серверу IMAP

Автор: axon 26.3.2011, 17:55

Пытаюсь разобраться с протоколом imap4. Подключаюсь к серверу с помощью tcp-сокета. Ответы сервера добавляю в QTextWidget. Получаю приветствие, но сервер практически не реагирует на мои запросы. Подскажите в чем проблема?

Вот основной код:

MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);

    imapSocket = new QTcpSocket(this);
    imapSocket->connectToHost(QHostAddress("127.0.0.1"), 143);
    connect(imapSocket, SIGNAL(readyRead()), SLOT(readMessage()));

}

MainWindow::~MainWindow()
{
    delete ui;
    imapSocket->close();
}

void MainWindow::on_ok_clicked()
{
    qDebug() << imapSocket->state();
    if(ui->send->text().isEmpty()) return;
    QByteArray data = ui->send->text().toAscii();
    imapSocket->write(data);
    ui->send->clear();
}


void MainWindow::readMessage()
{
    QByteArray datagram;
    datagram = imapSocket->readAll();
    QString ans(datagram);
    ui->answer->append(ans);
}

Автор: PAFOS 28.3.2011, 9:33

Согласно протоколу каждая команда должна заканчиваться CR LF (\r\n) у тебя видимо это не посылается.
Попробуй так

QByteArray data = ui->send->text().toAscii() + "\r\n";
imapSocket->write(data);

Автор: crashsp 18.7.2011, 22:02

У меня таже история приветствие получил но авторизоваться не могу пишет
LOGIN BAD command syntax error. sc=pokTmKo7S4Y1

Синтаксис вроде верен socket->write("LOGIN bla-bla@yandex.ru password\r\n");

Не кто не сталкивался ?
Evоlution получает и отправляет без проблемм...

Автор: PAFOS 1.8.2011, 11:13

После приветствия каждая команда должна иметь свой номер в префиксе.

Например

* OK localhost IMAP4rev1 v12.250 server ready
a001 LOGIN katie boxcar
a001 OK LOGIN completed
a002 LOGOUT
* BYE shadrach.smallorg.org IMAP4rev1 server terminating connection
a002 OK LOGOUT completed


В данном случае мы посылаем команду авторизации с номером а001
получаем ответ с номером а001

Посылаем команды выхода с номером а002
получаем ответ с номером а002

Форум Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)