Экспертная система Delphi.int.ru

Сообщество программистов
Общение, помощь, обмен опытом

Логин:
Пароль:
Регистрация | Забыли пароль?

Delphi.int.ru Expert

Другие разделы портала

Переход к вопросу:

#   

Статистика за сегодня:  


Лучшие эксперты

Подробнее »



Вопрос # 803

/ вопрос открыт /

Есть огромное желание, но мало опыта. Пишу клиент\сервер для программы файло обмена в сети на основе компонентов Indy в Delph 7 возникло много вопросов, и мало ответов. В сети по данной тематике кое чего есть и все таки мало.
Опишу вкраце суть работы программы: что-то наподобие DC++ клиент подключается к серверу(хабу) скачивает себе базу данных, выбрав нужный ему контент начинается закачка. Так тут и встает множество проблем главная - организовать передачу данных в сети. Сделать это я хочу мнго потоково аля Торрент.
Может найдутся сообщники в этом нелегком деле, буду рад. )

NETchel Вопрос ожидает решения (принимаются ответы, доступен мини-форум)

Вопрос задал: NETchel (статус: Посетитель)
Вопрос отправлен: 30 июля 2007, 14:02
Состояние вопроса: открыт, ответов: 2.

Ответ #1. Отвечает эксперт: Вадим К

Здравствуйте, NETchel!
Передавать данные по сети - не такая большая проблема. Большая проблема - придумать надёжную расширяемую систему. Есть такие компоненты idTCPClient и IdTCPServer. Они помогут передвать данные. Для собственно самой передачи слудует придумать протокол. типа первые два байта - код комманды, дальше 4 - длинна данных. Дальше сами данные. в конце crc.
Также необходимо изучить что такое потоки. вот в ближайшей рассылке должа выйти моя статья о использовании потоков и компонента idHTTP для закачки файлов по HTTP. Можно взять за основу.
Ну а дальше - это уже дело техники.

Ответ отправил: Вадим К (статус: Академик)
Время отправки: 30 июля 2007, 14:12

Ответ #2. Отвечает эксперт: Матвеев Игорь Владимирович

Здравствуйте, NETchel!
Я думаю не стоит разрабатывать свой протокол и всю систему вцелом - это громадный объем работы. Поищите в открытых проектах, например Total Torrent.

С другой стороны, вы планируете систему для локальной сети?, возможно стоит сделать доступ к базе данных по файлам в веб-интерфейсе. Напимер я разрабатываю систему WyJager: на сервере устанавливается mySQL (предустановлен в большинстве linux дистрибутивов, хотя система вцелом мультиплатформенна), в папку web сервера кидается папка wyjager с php скриптом веб интерфейса и шаблонами. А индексируют систему несколько администраторов, запуская периодически на своих компьютерах программу-индексер, которая подключается к mySQL серверу и обновляет БД.

Само собой система будет бесплатной, она уже работает в моей дворовой сети, исходники выложу в интернет как только детально проверю еще раз весь код.

Ответ отправил: Матвеев Игорь Владимирович (статус: Студент)
Время отправки: 31 июля 2007, 04:05
Оценка за ответ: 5


Мини-форум вопроса

Всего сообщений: 9; последнее сообщение — 31 июля 2007, 14:39; участников в обсуждении: 2.
NETchel

NETchel (статус: Посетитель), 30 июля 2007, 23:32 [#1]:

Спасибо за ответ, но все же каким образом организовать закачку\докачку с нескольких клиентов, причем одновременно для увеличения скорости.
Может есть более подробная информация по "придумыванию протокола" :). Заранее благодарю
Вадим К

Вадим К (статус: Академик), 31 июля 2007, 11:32 [#2]:

Не всегда увеличение количества потоков приводит к увеличению скорости. В общем случае - вообще не приводит.
Закачка в много потоков пошла с времён спутникового интернета, когда нельзя было качать больше кажеться 4кбит/с на один поток, но можно было организовывать 10, 20 таких потоков.

но никто не мешает вам при старте каждого потока указывать ему, "качай от сих до сих".
А он к серверу даёт запрос:"дай мне килобайт данных, начиная с адреса такого то"
Галочка "подтверждения прочтения" - вселенское зло.
NETchel

NETchel (статус: Посетитель), 31 июля 2007, 12:44 [#3]:

По найденной информации остановился на программной среде Delphi с ее Indy компонентами. На сервере стоит mySQL пользователь подключаясь качает базу к себе(чтобы в будущем только ее обновлять и не нагружать сервер) выбрав нужный файл качает с других пользователей в этом и есть как писал выше затруднения. Может это не совсем верное решение, потому что возникает множество вопросов "как" для меня новичка. А сделать то хочется качественный продукт(не коммерческий).
Вадим К

Вадим К (статус: Академик), 31 июля 2007, 12:51 [#4]:

займитесь вначале общим проектированием. Такие программы не решаются методом "кинул кнопку, ещё тот компонент, написал обработчик - работает".
К таким системам надо подходить с чётким ТЗ.

Цитата:


(чтобы в будущем только ее обновлять и не нагружать сервер)

Если у вас будет сотня-другая пользователей, то даже старый пенёк на 300 мгц сможет их обслуживать.
Один с законов программирования говорит "не оптимизируй без надобности"
Галочка "подтверждения прочтения" - вселенское зло.
NETchel

NETchel (статус: Посетитель), 31 июля 2007, 13:50 [#5]:

ТЗ есть, в сейчас встала задача обеспечить передачу данных по сети, да не просто передача, а так чтобы быстро аля торрент, п2п;
Также планируется в будущем сделать совместимость с официальными хабами п2п, но это в будущем. Программа разрабатывается для местной лан г. Томска. Посоветуйте каким образом исходя из написанного передавать данные, а то куда не ткнусь инф. мало.
Спасибо
Вадим К

Вадим К (статус: Академик), 31 июля 2007, 13:57 [#6]:

Если планируется слияние с другими сетями, тогда может проще взять офф. клиент и серверы и посмотреть? Для многих вариантов есть бесплатные варианты с исходниками. Может даже и писать ничего не надо будет. Ведь зачем изобретать велосипед?

Цитата:


да не просто передача, а так чтобы быстро аля торрент

А другие способы не есть быстрые?

Тоесть. Качайте офф. клиенты для торрента и смотрите.
Галочка "подтверждения прочтения" - вселенское зло.
NETchel

NETchel (статус: Посетитель), 31 июля 2007, 14:23 [#7]:

"А другие способы не есть быстрые?" - подробней пожалуйста.
Какие клиенты есть на Delphi? Есть ли русскоязычные?
Вадим К

Вадим К (статус: Академик), 31 июля 2007, 14:32 [#8]:

Цитата:


"А другие способы не есть быстрые?"

Это к вам вопрос. Просто вы утверждаете, что торрент быстей. Вот я и поставил вопрос.

Цитата:


Какие клиенты есть на Delphi?

Ну обленились. погуглить уже не могут
http://sourceforge.net/projects/torrenttorque/
http://sourceforge.net/projects/total-torrent/

Цитата:


Есть ли русскоязычные?

Делфи вроде не рускоязычный. К тому же, если есть исходники, хоть на сленговый переводите.
Галочка "подтверждения прочтения" - вселенское зло.
NETchel

NETchel (статус: Посетитель), 31 июля 2007, 14:39 [#9]:

спасибо только что скачал исход. torrenttorque и смотрю тут ссылка появилась.
Хочется просто всего и сразу, думал может статью по данной тематике найду... фиг ;)

Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.

Версия движка: 2.6+ (26.01.2011)
Текущее время: 22 февраля 2025, 11:39
Выполнено за 0.03 сек.