C++ (Qt)msger >> end;//QMessageBox::information(NULL, "", "", 0, 0); if (end != 0){ files = fopen(buf2.toAscii(), "wb"); //решил воспользоваться стандартными Си-шными методами записи файла for (i = 0; i < end; i++) { msger >> chr; putc(chr, files); } fclose(files);
C++ (Qt)while ((ch = getc(file)) != EOF) out << ch;
C++ (Qt)while ((ch = getc(file)) != EOF){ out << ch; socket->flush();}
C++ (Qt) quint16 blockSize; QDataStream in(&socket); in.setVersion(QDataStream::Qt_4_0); in >> blockSize; while (socket.bytesAvailable() < blockSize) { if (!socket.waitForReadyRead(Timeout)) { emit error(socket.error(), socket.errorString()); return; } }
C++ (Qt)void MainWindow::getDataStream(){ buf1 = ""; swt = ""; buf2 = ""; buf3 = ""; ch = ""; QDataStream in(&socket); QDataStream out(&socket); in.setVersion(QDataStream::Qt_4_6); if (fileSize != end) getFile(); else { in >> strA; if (strA.left(4) == "_msg") out << msgInputOutputDialog(); /*дальше аналогичные конструкции*/ } }
C++ (Qt)QString MainWindow::setGetFile(){ QDataStream msger(&socket); FILE *files; int chr; i = 0; end = 0; strA = strA.mid(5); if (strA.mid(0, 3) == "get") k = 1; else if (strA.mid(0, 3) == "set") k = 2; strA = strA.mid(5); while ((ch = strA.mid(i, 1)) != "\"") {buf1+=ch;i++;} strA = strA.mid(i+3); i = 0; while((ch = strA.mid(i, 1)) != "\"") {buf2+=ch;i++;} if (k == 1) //это ветка, если клиент отправляет файл. ОНа работает и на нее можно не обращать внимания { files = fopen(buf1.toAscii(), "rb"); msger << QString("Файл загружен на Ваш компьютер"); msger << buf2; end = QFile(buf1).size(); msger << end; while ((chr = getc(files))!= EOF) msger << chr; fclose(files); } else //Это ветка, если клиент принимает файл. С ней проблемы { msger >> end; if (end != 0){ getFile(); return QString("Файл скачан на компьютер");} else return QString("Невозможно записать файл на компьютер"); } return QString("Готово");}
C++ (Qt)void MainWindow::getFile(){ static int h = 0; int ch = 0; static FILE *file1; if (h == 0) { file1 = fopen(buf2.toAscii(), "wb"); h = 1; } QDataStream msger(&socket); msger >> ch; fileSize++; putc(ch, file1); if (fileSize == end) { fclose(file1); end = 0; fileSize = 0; }}