crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

 
Ответить в данную темуНачать новую тему
Max Payne
  опции профиля:
сообщение 22.5.2012, 22:06
Сообщение #1


Студент
*

Группа: Участник
Сообщений: 24
Регистрация: 16.2.2012
Пользователь №: 3223

Спасибо сказали: 0 раз(а)




Репутация:   0  


Использую QTcpSocket работаю с РОР3 сервером ( тестирую на сервере мейл ру);
код
tcp = new QTcpSocket (this);
tcp->connectToHost("pop3.mail.ru",110);   // создаю сокет и подключаюсь к серверу в конструсторе
tcp->waitForConnected();

connect (tcp, SIGNAL(readyRead()),this, SLOT(readData()));  // подключаю сигнал передачи данных с слотом чтения


слот обращения к серверу (подключаюсь к серверу и полую ответы считывая их методом подключенным используя SIGNAL(readyRead()
void Smtp::on_pushButton_3_clicked()
{

    QByteArray data;
    tcp->write("USER "+ui->lineEdit->text().toAscii()+"\r\n"); //");//авторизация
    tcp->flush();
    tcp->waitForReadyRead();
    tcp->write("PASS "+ui->lineEdit_2->text().toAscii().append("\r\n"));
    tcp->flush();
    tcp->waitForReadyRead();
    tcp->write("stat \r\n");
    tcp->waitForReadyRead();
    tcp->write("LIST \r\n"); //список сообщений 
    tcp->waitForReadyRead();

    for (int i = 0; i <3; i++)   // тут пытаюсь получить тело письма, первое получаю норм , а все остальные, только первую строчку, причем увеличивая на каждый отправленый запрос
    {                                       // получаю одну следующую строчку текущего письма
        QString pl = "RETR "+QString::number(i+1).toAscii()+" \n\r";
        qDebug() <<"send      "  <<pl;
       tcp->write(pl.toAscii() );
      
    }
}


метод чтения
void Smtp::readData()
{
    QString place;
    place = QString::fromUtf8(tcp->readAll());
    qDebug() << "receive  " << place;
    QString err = place.left(4);
    
    if(err=="-ERR")
    {
        QMessageBox::critical(this, tr("Erorr"),place);
        return;
    }

     QTcpSocket::SocketState S = tcp->state();
     if (count == 4)
     {
         QString h = place.left(5).split(" ").last();  //тут считываю сколько писемь всего есть в ящике
         numL = h.toInt();
              }
    count++;
return;

}


Я получаю первое письмо нормально , а остальные по строчке на каждую итерацию цыкла с запросом RETR. Подскажите кто писал что то подобное.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0


RSS Рейтинг@Mail.ru Текстовая версия Сейчас: 10.5.2025, 18:30