|
Вопрос # 803/ вопрос открыт / |
|
Есть огромное желание, но мало опыта. Пишу клиент\сервер для программы файло обмена в сети на основе компонентов Indy в Delph 7 возникло много вопросов, и мало ответов. В сети по данной тематике кое чего есть и все таки мало.
Опишу вкраце суть работы программы: что-то наподобие DC++ клиент подключается к серверу(хабу) скачивает себе базу данных, выбрав нужный ему контент начинается закачка. Так тут и встает множество проблем главная - организовать передачу данных в сети. Сделать это я хочу мнго потоково аля Торрент.
Может найдутся сообщники в этом нелегком деле, буду рад. )
 |
Вопрос задал: 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 серверу и обновляет БД.
Само собой система будет бесплатной, она уже работает в моей дворовой сети, исходники выложу в интернет как только детально проверю еще раз весь код.
Мини-форум вопроса
Всего сообщений: 9; последнее сообщение — 31 июля 2007, 14:39; участников в обсуждении: 2.
|
NETchel (статус: Посетитель), 30 июля 2007, 23:32 [#1]:
Спасибо за ответ, но все же каким образом организовать закачку\докачку с нескольких клиентов, причем одновременно для увеличения скорости.
Может есть более подробная информация по "придумыванию протокола" . Заранее благодарю
|
|
Вадим К (статус: Академик), 31 июля 2007, 11:32 [#2]:
Не всегда увеличение количества потоков приводит к увеличению скорости. В общем случае - вообще не приводит.
Закачка в много потоков пошла с времён спутникового интернета, когда нельзя было качать больше кажеться 4кбит/с на один поток, но можно было организовывать 10, 20 таких потоков.
но никто не мешает вам при старте каждого потока указывать ему, "качай от сих до сих".
А он к серверу даёт запрос:"дай мне килобайт данных, начиная с адреса такого то"
Галочка "подтверждения прочтения" - вселенское зло.
|
|
NETchel (статус: Посетитель), 31 июля 2007, 12:44 [#3]:
По найденной информации остановился на программной среде Delphi с ее Indy компонентами. На сервере стоит mySQL пользователь подключаясь качает базу к себе(чтобы в будущем только ее обновлять и не нагружать сервер) выбрав нужный файл качает с других пользователей в этом и есть как писал выше затруднения. Может это не совсем верное решение, потому что возникает множество вопросов "как" для меня новичка. А сделать то хочется качественный продукт(не коммерческий).
|
|
Вадим К (статус: Академик), 31 июля 2007, 12:51 [#4]:
займитесь вначале общим проектированием. Такие программы не решаются методом "кинул кнопку, ещё тот компонент, написал обработчик - работает".
К таким системам надо подходить с чётким ТЗ.
Цитата:
(чтобы в будущем только ее обновлять и не нагружать сервер)
Если у вас будет сотня-другая пользователей, то даже старый пенёк на 300 мгц сможет их обслуживать.
Один с законов программирования говорит "не оптимизируй без надобности"
Галочка "подтверждения прочтения" - вселенское зло.
|
|
NETchel (статус: Посетитель), 31 июля 2007, 13:50 [#5]:
ТЗ есть, в сейчас встала задача обеспечить передачу данных по сети, да не просто передача, а так чтобы быстро аля торрент, п2п;
Также планируется в будущем сделать совместимость с официальными хабами п2п, но это в будущем. Программа разрабатывается для местной лан г. Томска. Посоветуйте каким образом исходя из написанного передавать данные, а то куда не ткнусь инф. мало.
Спасибо
|
|
Вадим К (статус: Академик), 31 июля 2007, 13:57 [#6]:
Если планируется слияние с другими сетями, тогда может проще взять офф. клиент и серверы и посмотреть? Для многих вариантов есть бесплатные варианты с исходниками. Может даже и писать ничего не надо будет. Ведь зачем изобретать велосипед?
Цитата:
да не просто передача, а так чтобы быстро аля торрент
А другие способы не есть быстрые?
Тоесть. Качайте офф. клиенты для торрента и смотрите.
Галочка "подтверждения прочтения" - вселенское зло.
|
|
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 (статус: Посетитель), 31 июля 2007, 14:39 [#9]:
спасибо только что скачал исход. torrenttorque и смотрю тут ссылка появилась.
Хочется просто всего и сразу, думал может статью по данной тематике найду... фиг
|
Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.
|