Модераторы: Snowy, Poseidon, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Отправка получение файлов по сети TCP, определение статуса получения файла 
:(
    Опции темы
Norfonzor
Дата 22.10.2010, 12:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 121
Регистрация: 17.10.2008

Репутация: нет
Всего: нет



клиент (отправка):

Код

IdTCPClient1.Socket.WriteLn('file', enUTF8);//отправка запроса принятия файла

по таймеру проверка подтверждения готовности принятия файла сервером
Код

if IdTCPClient1.Socket.ReadLn(enUTF8)='File_load_ok' then IOHandler.WriteFile('C:\students.mdb', true);


сервер:
на TCPServer1Execute
Код

var fs: TFileStream;
....

if l='file' then
begin
  AContext.Connection.IOHandler.WriteLn('File_load_ok');//отправка подтверждения готовности принятия файла
  fs:= TFileStream.Create('C:\students_UPload.mdb', fmCreate);//создает место на диске
  AContext.Connection.IOHandler.ReadStream(fs, -1, true);//читает файл из Stream
  fs.Free;//
  showmessage('Сервер: принял файл');//этого сообщения не появляется. 

end



как узнать принял ли сервер файл?
Удачно ли использовать этот метод передачи файлов? размер БД до 7мб

Спасибо.

PM MAIL   Вверх
Snowy
Дата 22.10.2010, 12:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 11363
Регистрация: 13.10.2004
Где: Питер

Репутация: 53
Всего: 484



Передай серверу размер файла перед отправкой.
Тогда сможешь указать нужное количество байт, а не -1.
Это позволит не разрывать связь после отправки файла.
Соответственно, после отправки можно будет передать код успеха.
PM MAIL   Вверх
Norfonzor
Дата 25.10.2010, 07:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 121
Регистрация: 17.10.2008

Репутация: нет
Всего: нет



спасибо, а вот чем отличается Socket и IOHandler между собой, Socket ждет ответа на сообщение???

Код

AContext.Connection.Socket.WriteLn
AContext.Connection.IOHandler.WriteLn


а каким способом получить размер файла перед отправкой? 
Код

FS := TFileStream.Create(Filename, fmOpenRead);
size:=FS.Size;

Определяя размер файла так^ сервер не останавливается принимать файл, и зависает.


Нашел кучу пример с использованием "AThread" по отправке файлов с определением их размера но в 10ой indy этого нет.

Это сообщение отредактировал(а) Norfonzor - 25.10.2010, 08:53
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Сети"
Snowy
Poseidon
MetalFan

Запрещено:

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делится вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи

Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Snowy, Poseidon, MetalFan.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Сети | Следующая тема »


 




[ Время генерации скрипта: 0.1299 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.