Главная Главная страница форума Регистрация Вход
Новые сообщения Участники форума Правила форума Поиск
Страница 1 из 11
Модератор форума: Ekz 
Форум » Все о Delphi » Интернет и сети » Передача файлов посети (Обудим этот вопрос)
Передача файлов посети
SLYДата: Воскресенье, 01.02.2009, 16:38 | Сообщение # 1
Ранг 1
Группа: Проверенные
Сообщений: 11
Награды: 0
Репутация: 0
Статус: Offline
У меня такой вот интересный вопрос по передачи файлов через TCP-IP сети...

Я уже протестировал самый простой способ: WriteStream и ReadStream сервера и клиента: TIDTCPServer и TIDTCPClient соответственно (Indy вкладки инструментов) (Indy - Internet Direct).

Однако у этого способа есть важные недостатки:
1)нельзя следить за прогрессом передачи файла (оссобенно, если передавать БОЛЬШОЙ файл)
2)=> нельзя и выводить никакой информации о ходе передачи/приема файла (или вообще потока, ведь это может быть и не TFileStream, а например TMemoryStream c картинкой или TStringList'ом). Т.е. нельзя отобразить любимый прогрессбар, скорость и.т.п.

С другой стороны можно использовать WriteLn и ReadLn но там я немного путаюсь...
например: некоторые замечали, что если открыть бинарный файл(программу, например), например, в блокноте и ничего не делая просто сохранить его, программа перестанет рабоать... т.е. как я подозреваю некоторые символы теряются или изменяются...т.к. там какая-то разметка, нечитаемые сиволы и.т.п.
поятому я незнаю, сработает ли если просто записывать и читать Char'ы...

можно и HEX коды посылать:так надежнее, но это увеличит размер ровно в 2 РАЗА!

короче, помагите и обсудите может как сделать простой и полезный протокол для этого...

З.Ы.:Заранее спасибо и FTP или другие протоколы использовать НЕ хочу!.... хачу сделать свой! =) =)


Работаю на благо ShareWare и больше для FreeWare =)
 
AdminДата: Воскресенье, 01.02.2009, 17:26 | Сообщение # 2
Ранг 10
Группа: Пользователи
Сообщений: 1268
Награды: 16
Репутация: 2
Статус: Offline
Свой протокол? Это не самая лучшая затея. Ведь протокол обеспечивает гарантированную доставку пакета. Вам охото с этим мучиться. И зачем изобретать велосипед? Ведь уже все сделано!

насчет

Quote (SLY)
1)нельзя следить за прогрессом передачи файла (оссобенно, если передавать БОЛЬШОЙ файл)

Точно не знаю не использовал, но скорее всего должно что-то быть

Я пересылал так c помощю TIdUDPServer. Все просто и понятно. Сам задавался этим вопросом и нашел исходник:

Прикрепления: SendUDP.rar(193Kb)


Не оказываю помощь через личные сообщения и ICQ
 
SLYДата: Понедельник, 02.02.2009, 16:21 | Сообщение # 3
Ранг 1
Группа: Проверенные
Сообщений: 11
Награды: 0
Репутация: 0
Статус: Offline
протокол я имел ввиду в общем смысле этого слова... ведь здесь тоже в своем роде специальный протокол:
сервер принимает сообщение: "count_buf:" и данные, которое посылал клиент...
вроде протокол это и есть вот этот язык сообщений... в каком-то смысле.

Спасибо...

Ну и тут используется способ, до которого я и сам доходил: нарезание большого потока на маленькие и отправка их как WriteStream...
здесь эта нарезка называется пакетами...(хотя именно так она и может называться... ) =)
хотя при пакетах в 40000 байт сложно будет вычислить скорость в КБ/Сек...можно тока примерную, исходя из времени, уходящее на один пакетт... +)

ладненько, спасибо! и пойду дальше воять =)


Работаю на благо ShareWare и больше для FreeWare =)
 
AdminДата: Понедельник, 02.02.2009, 16:36 | Сообщение # 4
Ранг 10
Группа: Пользователи
Сообщений: 1268
Награды: 16
Репутация: 2
Статус: Offline
А время по-моему так и вычисляется. Гарантировать что тот или иной пакет приедт с первого раза и за определенное время никто не может!
Удачи


Не оказываю помощь через личные сообщения и ICQ
 
Форум » Все о Delphi » Интернет и сети » Передача файлов посети (Обудим этот вопрос)
Страница 1 из 11
Поиск:

Copyright DelphiDevelop.ru © 2008-2018
Хостинг от uCoz