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

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

Страниц: 1 [2]   Вниз
  Печать  
Автор Тема: Как подключится к POP серверу ?  (Прочитано 17882 раз)
QtProger
Гость
« Ответ #15 : Декабрь 28, 2009, 21:08 »

Спасибо !  Веселый
Записан
QtProger
Гость
« Ответ #16 : Декабрь 29, 2009, 15:57 »

У меня получилось подключиться к серверу, но не получается получить ответ от сервера. Как это сделать ?
Код
C++ (Qt)
#include "widget.h"
#include "ui_widget.h"
 
Widget::Widget(QWidget *parent)
   : QWidget(parent), ui(new Ui::Widget)
{
   ui->setupUi(this);
   socket = new QTcpSocket(this);
   connect(ui->pushButton, SIGNAL(clicked()), this, SLOT(click_button()));
   connect(socket, SIGNAL(connected()), this, SLOT(show_if_connect()));
}
 
Widget::~Widget()
{
   delete ui;
}
 
void Widget::click_button()
{
  socket->connectToHost("pop.mail.ru", 110);
}
 
void Widget::show_if_connect()
{
   qDebug("Connected");
   socket->write("USER login\r\n");
   socket->write("PASS password\r\n");
   socket->write("STAT\r\n");
   qDebug(socket->readAll()); //не выводит ничего
}
Записан
BRE
Гость
« Ответ #17 : Декабрь 29, 2009, 16:06 »

Ну так сервер не успевает тебе ответить.  Улыбающийся
Посмотри на:
bool QAbstractSocket::canReadLine () const
bool QIODevice::waitForReadyRead ( int msecs )
void QIODevice::readyRead ()   [signal]
Записан
QtProger
Гость
« Ответ #18 : Декабрь 29, 2009, 16:34 »

Ну так сервер не успевает тебе ответить.  Улыбающийся

Чтение из сокета засунул в слот, связанный с сигналом readyRead(). Таким образом смог получить ответ от сервера.
Записан
QtProger
Гость
« Ответ #19 : Декабрь 31, 2009, 11:38 »

Команда:

Код
C++ (Qt)
qDebug(socket->readAll()); //QTcpSocket socket

Выдает мне следующий результат:

Код:
+OK 
+OK Password required for user login
+OK login@mail.ru maildrop has 1430 messages (4953088 octets)
+OK 1430 4953088

Мне нужно только количество писем узнать. Какой командой это можно сделать ? Наверно есть более рациональный способ, чем парсить весь этот текст
Записан
crossly
Гость
« Ответ #20 : Январь 03, 2010, 17:55 »

правильнее всего обрабатывать ответ на каждую посланную команду ... это избавит тебя от ошибок... (мало ли сервер не доступен, не правильный логин пароль и тд).... примерно так же, как это показано в примере smtp (ссылку давал выше)... + обрабатывать построчно.... т.е. на команду STAT в ответ ты получишь строку +OK 1430 4953088... а далее просто в QString её и split(" ").at(1) количество писем... Улыбающийся
Записан
_govorilka
Гость
« Ответ #21 : Январь 03, 2010, 21:22 »

Вот сюда не пробовали заглянуть:
http://labs.trolltech.com/page/Projects/QtMessaging
Возможно это то, что Вам нужно.
Записан
QtProger
Гость
« Ответ #22 : Январь 04, 2010, 01:16 »

правильнее всего обрабатывать ответ на каждую посланную команду ... это избавит тебя от ошибок... (мало ли сервер не доступен, не правильный логин пароль и тд).... примерно так же, как это показано в примере smtp (ссылку давал выше)... + обрабатывать построчно.... т.е. на команду STAT в ответ ты получишь строку +OK 1430 4953088... а далее просто в QString её и split(" ").at(1) количество писем... Улыбающийся

Получилось.  Веселый Спасибо
Записан
serg_hd
Хакер
*****
Offline Offline

Сообщений: 668



Просмотр профиля
« Ответ #23 : Март 30, 2010, 16:40 »

... + обрабатывать построчно.... т.е. на команду STAT в ответ ты получишь строку +OK 1430 4953088...
КАК это сделать? Команда STAT у меня выполняется в отдельном слоте, но всё равно в ответе - ВСЕ данные вместе с данными результата авторизации, а не только статистика.
Вобщем надо учитывать, что сигнал readyRead испускается соответственно каждой команде по истечение времени.
« Последнее редактирование: Март 30, 2010, 17:20 от serg_hd » Записан

kubuntu/Win7/x64/NetBeans
crossly
Гость
« Ответ #24 : Март 31, 2010, 13:58 »

http://qt.gitorious.org/qt-labs/messagingframework/blobs/master/src/plugins/messageservices/pop/popclient.cpp
Записан
Страниц: 1 [2]   Вверх
  Печать  
 
Перейти в:  


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