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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: Передача фалов по сети больших файлов(клиент-сервер)  (Прочитано 8723 раз)
insamo
Гость
« : Октябрь 15, 2010, 12:07 »

Всем здрасти

Прошу гуру о помощи

Пишу многофункциональное клиент-сервер приложение, не могу реализовать функцию передачи файлов.

Интересуют такие вопросы

1. Как передавать  большие файлы ( 2гб ).
2. Если блоками то по скока.
Если у кого-нить есть наметки плиз  поделитесь

Заранее спасибо
Записан
merke
Гость
« Ответ #1 : Октябрь 15, 2010, 12:14 »

Я фильм пересылаю 700 метров паками 1024*64 где то за 5 минут по локалке.

http://www.prog.org.ru/index.php?topic=13167.msg98798#msg98798

В этой теме человек предоставляет исходники клиент-серверного приложения для передачи файлов

Удачи
Записан
insamo
Гость
« Ответ #2 : Октябрь 15, 2010, 15:10 »

Блин весь форум перелопатил в упор не видел.
Спасибо, огромное! буду разбираться! Улыбающийся
Записан
insamo
Гость
« Ответ #3 : Октябрь 15, 2010, 16:05 »

У меня паходу руки кривые, Алекс плиз скинь свой готовый проект, пожалуста. А я потом скину что получилось.
Записан
Waryable
Гость
« Ответ #4 : Октябрь 15, 2010, 16:21 »

А почему не используете QDir? Полный функционал по маневрированию файлами и каталогами.
Записан
insamo
Гость
« Ответ #5 : Октябрь 15, 2010, 17:05 »

Опиши как, я просто не представляю как.
Я не хочу в ручную расшаривать папочки
Записан
eugene
Гость
« Ответ #6 : Октябрь 15, 2010, 21:17 »

А зачем их вообще шарить? Я так понимаю, речь совсем о другом идет
Записан
insamo
Гость
« Ответ #7 : Октябрь 16, 2010, 10:04 »

Что ты предлагаешь, я тебя не пойму. QDir и клиент-сервер как это?

Я делаю клиент-сервер со множеством функций. Одна из функций будет, передача файлов.
Записан
merke
Гость
« Ответ #8 : Октябрь 16, 2010, 10:44 »

Тот пример который я тебе показал, т.е. скинул ссылку, ты можешь взять его за основу. Самое главное что можешь взять от туда так это сам блок кода где непосредственно считывается файл кусками и шлется и взять кусок кода где принимающая сторона принимает эти паки и формирует файл.

Для начала тебе нужно придумать свой протокол обмена. Предлагаю следующий:

Допустим клиент передает серверу файл:

Клиент посылает серверу команду допустим: #CMDST#имя_файла_под_которым _сохранить#размер_файла

Т.е. #CMDST# это сама команда означающая начало передачи файла, а уже имя_файла_под_которым _сохранить#размер_файла это параметры команды. Как только сервер получает данную команду он запоминает для текущего клиента название файла и размер файла. И шлет команду например: #CMDIR#, клиент получив её начинает паками слать файл, а сервер получать их, как только весь файл получен на стороне сервера, тот шлет команду #CMDET# т.е. получил файл. На этом передача файла заканчивается.

Будут вопросы пиши!
Записан
Edynchik
Гость
« Ответ #9 : Декабрь 16, 2010, 11:56 »

Создал консольный проект по исходнику выложенному выше, network в  .pro добавил...вот только не пойму почему выходит :: error: collect2: ld returned 1 exit status
вот коноль сборки:
Код:
Выполняется сборка проекта filesender...
Настройки не изменились, этап qmake пропускается.
Запускается "C:/Qt/2010.05/mingw/bin/mingw32-make.exe" -w
mingw32-make: Entering directory `D:/QT/filesender'

c:\qt\2010.05\qt\bin\qmake.exe -spec c:\Qt\2010.05\qt\mkspecs\win32-g++ -o Makefile filesender.pro

mingw32-make: Leaving directory `D:/QT/filesender'

mingw32-make: Entering directory `D:/QT/filesender'

C:/Qt/2010.05/mingw/bin/mingw32-make -f Makefile.Debug

mingw32-make[1]: Entering directory `D:/QT/filesender'

g++ -enable-stdcall-fixup -Wl,-enable-auto-import -Wl,-enable-runtime-pseudo-reloc -Wl,-subsystem,console -mthreads -Wl -o debug\filesender.exe debug/filesender.o debug/moc_filesender.o  -L"c:\Qt\2010.05\qt\lib" -lQtNetworkd4 -lQtCored4

mingw32-make[1]: Leaving directory `D:/QT/filesender'

mingw32-make: Leaving directory `D:/QT/filesender'

c:/qt/2010.05/mingw/bin/../lib/gcc/mingw32/4.4.0/../../../libmingw32.a(main.o):main.c:(.text+0x104): undefined reference to `WinMain@16'

collect2: ld returned 1 exit status

mingw32-make[1]: *** [debug\filesender.exe] Error 1

mingw32-make: *** [debug] Error 2

Процесс "C:/Qt/2010.05/mingw/bin/mingw32-make.exe" завершился с кодом %2.
Возникла ошибка при сборке проекта filesender (цель: Настольный компьютер)
Во время выполнения сборки на этапе "Сборка"
знаю что проблема в .pro, а вот в чем понять не могу. Может кто поможет,буду очень благодарен)
вот и сам .pro:
Код:
#-------------------------------------------------
#
# Project created by QtCreator 2010-12-16T11:12:16
#
#-------------------------------------------------

QT       += core\
            network

QT       -= gui

TARGET = fileserver
CONFIG   += console
CONFIG   -= app_bundle

TEMPLATE = app


SOURCES += fileserver.cpp \
    filereceiverthread.cpp \


HEADERS += \
    fileserver.h \
    filereceiverthread.h
« Последнее редактирование: Декабрь 16, 2010, 11:58 от Edynchik » Записан
twp
Гость
« Ответ #10 : Декабрь 16, 2010, 12:07 »

Цитировать
undefined reference to `WinMain@16'
Есть функция main?
Записан
Edynchik
Гость
« Ответ #11 : Декабрь 16, 2010, 14:52 »

Цитировать
undefined reference to `WinMain@16'
Есть функция main?
да с этим разобрался, спасибо...вот только остался один вопрос: В какой последовательности выолнять все функции между клиентом и сервером?
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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