crossplatform.ru

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

> QTcpSocket обрезаются файлы
prj
  опции профиля:
сообщение 6.11.2011, 21:32
Сообщение #1


Новичок


Группа: Новичок
Сообщений: 2
Регистрация: 6.11.2011
Пользователь №: 2982

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




Репутация:   0  


Добрый вечер, пишу приложение, которое принимает файлы от другого сервера, и почему-то сохраненные файлы оказываются произвольным образом обрезаны. Например файл 5мб оказывается ~300-400кб, а файл 80кб - 72кб.
Не могу понять в чем дело. Вот кусок кода:
void fclient::get_file(QListWidgetItem* item)
{
    connect_to_s();
    if(tcpSocket.state() != 3)
    {
        qDebug("not connected...");
        return;
    }
    QByteArray str("GET ");
    str += item->text()+"\n";
    tcpSocket.write(str.data());
    tcpSocket.flush();
    QByteArray buf;
    QFile recfile(item->text());
    recfile.open(QIODevice::WriteOnly);
    if(!recfile.exists())
        qDebug("not exists");
    if(recfile.isOpen())
        qDebug("opened");
   int n;
   while(tcpSocket.waitForReadyRead())
   {
        buf = tcpSocket.read(BUFSIZ-1);
        //qDebug(buf.data());
        //qDebug("#");
        qDebug("tcp stat %d", tcpSocket.state());
        recfile.write(buf);
        recfile.flush();
   }
   recfile.close();
   close_conn();
}

void fclient::req_file_list(void)
{
    printf("%d\n", BUFSIZ);
    connect_to_s();
    if(tcpSocket.state() != 3)
        return;

    tcpSocket.write("list\n");
    tcpSocket.flush();    
    QByteArray files, tmp;
    int n=1;
    while(n)
    {
        n = tcpSocket.waitForReadyRead();
        files = tcpSocket.readAll();
        QList<QByteArray> list = files.split('\n');

        while(!list.empty())
        {
            tmp = list.first();
            tmp = tmp.mid(0,tmp.lastIndexOf("\n"));
            list.removeFirst();
            if(tmp.isEmpty())
                continue;
            if(!tmp.contains("endl"))
                   widg->addItem(tmp.data());
                    else
                        {
                            n = 0;
                            break;
                        }
        }
    }
    close_conn();
}
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
 
Начать новую тему
Ответов
prj
  опции профиля:
сообщение 7.11.2011, 17:37
Сообщение #2


Новичок


Группа: Новичок
Сообщений: 2
Регистрация: 6.11.2011
Пользователь №: 2982

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




Репутация:   0  


аааааааааа!!! вчера весь вечер возился, чего только не перепробовал, а щас решил попробовать пренебрегаемой ранее readAll, и все запахало!)
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Сообщений в этой теме


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


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




RSS Текстовая версия Сейчас: 22.11.2024, 20:47