![]() |
|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Пользователь
Регистрация: 25.01.2012
Сообщений: 12
|
![]()
Добрый день. Реализовываю передачу zip архива с клиента на сервер. Использую IdCmdTCPServer и IdCmdTCPClient. Примерно, что есть сейчас:
1) Сервер шлёт клиенту команду 'yeswritefile': Код:
Код:
Код:
Путём экспериментов выяснил, что если отправить reply ровно через 20 секунд после зависания сервера, то в большинстве случаев он продолжает свою работу и можно отправлять команду iwriteit с клиента. Но почему именно 20 секунд, почему не всегда 20, а пару раз было 31, и как с этим работать на клиенте? Sleep(20 000) оказался неэффективен. |
![]() |
![]() |
![]() |
#2 |
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
![]()
Вопрос не в тему: Может стоит использовать IdFTP для таких передач?
I'm learning to live...
|
![]() |
![]() |
![]() |
#3 |
Пользователь
Регистрация: 25.01.2012
Сообщений: 12
|
![]()
Может и стоит, но уже готово больше половины проекта и именно с IdCmdTcp. Разбираться в работе IdFTP и начинать всё заново сейчас просто нет времени.
|
![]() |
![]() |
![]() |
#4 |
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
![]()
Хм... Ну тады звиняйте. Сказать нечего. Я избегал работать с IdTCP напрямую.
I'm learning to live...
|
![]() |
![]() |
![]() |
#5 |
Участник клуба
Регистрация: 07.12.2011
Сообщений: 1,025
|
![]()
а так
Код:
Не стесняемся, плюсуем!
![]() |
![]() |
![]() |
![]() |
#6 |
Пользователь
Регистрация: 25.01.2012
Сообщений: 12
|
![]()
Slym, я пробовал. Но нет. Решение иное. Не знаю, что не так с sendcmd в TidContext, но стоило заменить
Код:
Код:
Но полной работоспособности проекта я так и не достиг. Что есть теперь: 1) Сервер получает уведомление от клиента, просит пользователя нажать на кнопку "Принять". Пользователь нажимает: Код:
Код:
Код:
Последний раз редактировалось _CyberHedgehog_; 23.08.2013 в 13:16. |
![]() |
![]() |
![]() |
#7 |
Пользователь
Регистрация: 25.01.2012
Сообщений: 12
|
![]()
Иногда на диске появляются принятые файлы размером 1,5 Гб или 1,8 Гб. При отправке файла размером 1 байт :D
Но я пока не понял, при каких обстоятельствах это происходит. И вообще, это могут быть файлы из прошлых вариаций кода. Потому, не буду говорить точно, дабы не ввести в заблуждение. |
![]() |
![]() |
![]() |
#8 |
Пользователь
Регистрация: 25.01.2012
Сообщений: 12
|
![]()
Попробовал поработать с memorystream. Так, на всяк случай:
Код писать весь, думаю, не нужно. Я просто использовал memorystream, вместо filestream. Ну, теперь вообще ничего не происходит с файлами на стороне сервера, но удалось заметить кое-что. Если после нажатия кнопки "Принять" на сервере, принудительно закрыть окно клиента, то на сервере вылетит ошибка "Out of memory" и красным начнёт светится строка: Код:
|
![]() |
![]() |
![]() |
#9 |
Участник клуба
Регистрация: 07.12.2011
Сообщений: 1,025
|
![]()
как работает ReadStream? так - читает 4 байта (или больше? зависит от проперти LargeStream) размера и далее читает этот размер...
как работает write? так - тупо пишет содержимое стрима... в чем разница? в размере! но есть магический параметр... procedure Write(AStream: TStream; ASize: Int64 = 0; AWriteByteCount: Boolean = False); в итоге имеем ASender.Context.Connection.IOHandle r.write(f,0,true);
Не стесняемся, плюсуем!
![]() Последний раз редактировалось Slym; 23.08.2013 в 14:36. |
![]() |
![]() |
![]() |
#10 | |
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
![]() Цитата:
Я тут выкладывал пример своего ФТП сервера. Не жалею что написал его - работает как часы.
I'm learning to live...
|
|
![]() |
![]() |
![]() |
|
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Сравнение времени локального Zip архива с Zip архивом на FTP | Qwerty192837 | Общие вопросы Delphi | 1 | 28.05.2013 10:20 |
Распаковка zip архива используя Ionic.Zip | santaXZ | C# (си шарп) | 1 | 20.04.2013 02:46 |
DSPack воспроизведение из ZIP архива | Adult_Master | Мультимедиа в Delphi | 0 | 22.01.2013 18:32 |
Delphi 2010 создания zip архива | MORPEH | Общие вопросы Delphi | 5 | 11.12.2012 16:03 |
Чтение с zip архива | Nikk[UA] | Общие вопросы Delphi | 15 | 21.06.2012 00:15 |