Найти - Пользователи
Полная версия: Отправка больших файлов в сети
Начало » Network » Отправка больших файлов в сети
1 2
DOMINUS
Сподіваюсь ніхто не буде проти, якщо я виражусь українською.
В мене виникла проблема в написанні скріпта для пересилання великих файлів мережею.
Я використовую такий код сервера (ця частина відповідає лише за пересилання данних клієнту):
self.path+='\\%s' % self.name
s=open(self.path,'rb')

datcl.send(s.read())
datcl.send('end of trusmition')

Відповідно кклієнтський скріпт приймання такий:
while 1:
dt=dat.recv(4096)
self.loaded+=dt
if dt.endswith('end of trusmition'): break
Ця штука працює, але при розмірах файлів більше 10 Mb виникають великі затримки і сервер практично висить.
Порадьте щось більш оптимальне, будь-ляска
j2a
Ну дык у тебя весь файл в память читается. Попробуй отдавать итератором. На досуге почитай
http://softwaremaniacs.org/blog/2006/04/18/controlled-download/ и http://softwaremaniacs.org/blog/2007/01/08/controlled-download-2/
DOMINUS
j2a
Дякую, дуже допомогло. Тепер все хоч і не дуже швидко, але стабільно пересилається!!!
bialix
DOMINUS
j2a
Дякую, дуже допомогло. Тепер все хоч і не дуже швидко, але стабільно пересилається!!!
в чем прикол писать вопросы на украинском, якщо підпис у вас російською?
j2a
bialix, да всё равно. Я и без переводчика понял и вопрос, и ответ :) А вот то, что человек код в bb-тег code не обернул, то да - заслуживает порицания ;)
Ferroman
100%
DOMINUS
bialix
Підпис взятий з фільму і використовую я його в оригіналі :)
j2a
А код і так всі зрозуміли :)
До речі, я тільки починаю програмити і це перше більш-менш складне, що я зробив. Якщо є не дуже зайнятий народ, то через кілька днів можу закинути повний код ( після того як доведу його до ладу) на загальну оцінку, протестіть, так сказати і напишіть відгуки, можливо поради
bialix
j2a
А вот то, что человек код в bb-тег code не обернул, то да - заслуживает порицания ;)
определенно.
DOMINUS
В мене готовий більш-менш стабільний код севера і клієнта. Зараз сервер може передавати клієнту файли і папки. Це все працює лише в мережі.
Доступні команди:
list - показує вміст активної папки
chdir - перейти в нову папку, яку перед тим показав “ліст”
rootdir - перейти в кореневий розшар
updir - на рівень вверх
download - закачати папку або файл (файл повинен мати повну назву)

В клієнті передбачено, що у випадку вказання неправильного шляху для збереження, все буде копіюватись на диск С:

Сервер підтримує 2 команди:
add shares - додати папку до кореневого розшару
close server - закрити сервер при наступному конекті

Інтерфейс нульовий поки-що, за це не глуміться з мене. В найближчому часі планую додати конфіг-файл (xml) а також облік користувачів, закачок та іншої інфи за допомогою MySQL, а також веб-інтерфейс до бази данних. Планую налагодити це все для роботи також з нікс-подібними операційними ситемами.

І ще питання ламера: як і де можна вивісити 15kb коду?
j2a
DOMINUS
В мене готовий більш-менш стабільний код севера і клієнта. Зараз сервер може передавати клієнту файли і папки. Це все працює лише в мережі.
А протокол какой?
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB