|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
22.08.2013, 14:56 | #1 |
Пользователь
Регистрация: 25.01.2012
Сообщений: 12
|
IdCMDTCP и передача zip архива
Добрый день. Реализовываю передачу zip архива с клиента на сервер. Использую IdCmdTCPServer и IdCmdTCPClient. Примерно, что есть сейчас:
1) Сервер шлёт клиенту команду 'yeswritefile': Код:
Код:
Код:
Путём экспериментов выяснил, что если отправить reply ровно через 20 секунд после зависания сервера, то в большинстве случаев он продолжает свою работу и можно отправлять команду iwriteit с клиента. Но почему именно 20 секунд, почему не всегда 20, а пару раз было 31, и как с этим работать на клиенте? Sleep(20 000) оказался неэффективен. |
22.08.2013, 15:04 | #2 |
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
Вопрос не в тему: Может стоит использовать IdFTP для таких передач?
I'm learning to live...
|
22.08.2013, 15:08 | #3 |
Пользователь
Регистрация: 25.01.2012
Сообщений: 12
|
Может и стоит, но уже готово больше половины проекта и именно с IdCmdTcp. Разбираться в работе IdFTP и начинать всё заново сейчас просто нет времени.
|
22.08.2013, 15:44 | #4 |
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
Хм... Ну тады звиняйте. Сказать нечего. Я избегал работать с IdTCP напрямую.
I'm learning to live...
|
22.08.2013, 20:06 | #5 |
Участник клуба
Регистрация: 07.12.2011
Сообщений: 1,025
|
а так
Код:
Не стесняемся, плюсуем!
|
23.08.2013, 13:14 | #6 |
Пользователь
Регистрация: 25.01.2012
Сообщений: 12
|
Slym, я пробовал. Но нет. Решение иное. Не знаю, что не так с sendcmd в TidContext, но стоило заменить
Код:
Код:
Но полной работоспособности проекта я так и не достиг. Что есть теперь: 1) Сервер получает уведомление от клиента, просит пользователя нажать на кнопку "Принять". Пользователь нажимает: Код:
Код:
Код:
Последний раз редактировалось _CyberHedgehog_; 23.08.2013 в 13:16. |
23.08.2013, 13:20 | #7 |
Пользователь
Регистрация: 25.01.2012
Сообщений: 12
|
Иногда на диске появляются принятые файлы размером 1,5 Гб или 1,8 Гб. При отправке файла размером 1 байт :D
Но я пока не понял, при каких обстоятельствах это происходит. И вообще, это могут быть файлы из прошлых вариаций кода. Потому, не буду говорить точно, дабы не ввести в заблуждение. |
23.08.2013, 13:59 | #8 |
Пользователь
Регистрация: 25.01.2012
Сообщений: 12
|
Попробовал поработать с memorystream. Так, на всяк случай:
Код писать весь, думаю, не нужно. Я просто использовал memorystream, вместо filestream. Ну, теперь вообще ничего не происходит с файлами на стороне сервера, но удалось заметить кое-что. Если после нажатия кнопки "Принять" на сервере, принудительно закрыть окно клиента, то на сервере вылетит ошибка "Out of memory" и красным начнёт светится строка: Код:
|
23.08.2013, 14:25 | #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. |
23.08.2013, 14:26 | #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 |