LINUX.ORG.RU

написать torrent клиент на C или C++


0

1

Здравствуйте, требуется написать террент клиент на c или c++ Требования:

1) минимальный размер (до 500кб)

2) работать должен с одним единственным torrent файлом.

3) должен уметь скачать файл, раздаваемый с альтернативного источника http

4) должен уметь раздавать файл.

5) запускается из консоли, как только файл целиком скачан, возвращает в оболочку код завершения «0», при этом сам не перестает работать, а продолжает работу в фоне, перестает раздавать файл предположительно на 10 - 20 секунд, далее уведомляет трекер, что имеет у себя целиком файл и продолжает работу в фоне.

6) в общем должен соответствовать основным спецификациям Bittorrent, чтобы не возникало особых проблем с совместимостью.

собственно вопрос, сколько будет стоить такой проект и сколько времени потребуется на реализацию, сам написать не смогу, вот и спрашиваю.

★★★

Что уже transmission-daemon не подходит для таких задач?

bhfq ★★★★★
()

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

thesis ★★★★★
()

Полчаса на обёртку над aria2c.

x3al ★★★★★
()

С нуля у хорошего сишника или плюсовика думаю месяц фулл тайма или 200 килорублей.

Legioner ★★★★★
()

Всегда было интересно, откуда у заказчиков рохжаются ограничения на ЯП и технологии? «Нужен сайт на джанго!», «Нужна программа на С». Тут особенно не понятно: Бинарник да бинарник (да хоть скрипт), какая разница на чём его писали?

Kalashnikov ★★★
()
Ответ на: комментарий от Kalashnikov

А ограничение в 500кб вас не смущает? К.О. Шепчет, что должно работать в экзотичных условиях и других инструментов, кроме C/C++ там может и не быть.

frozenix ★★★
()
Ответ на: комментарий от Kalashnikov

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

Legioner ★★★★★
()
Ответ на: комментарий от Kalashnikov

А теперь представьте что дальнейшим развитием и поддержанием продукта будет заниматься не автор а заказчик? Если это не скрипт, а например демон, да ещё не дай бог работающий на системе не x86, а скажем ARM, то его ещё надо собрать под эту систему.

imb ★★
()
Ответ на: комментарий от frozenix

Ну я скорее об общем случае. И таки описывать тогда условия и надо было, а не придумывать ограничения, исполнитель бы сам разобрался.

К.О.

должно

может

К.О. в сослагательном не говорит.

Kalashnikov ★★★
()
Ответ на: комментарий от thesis

подозреваю, что так и будет, только в качестве сервера будет выступать tp-link с воткнутой флешкой))))

IvanR ★★★
() автор топика
Ответ на: комментарий от IvanR

Ты вроде говорил, что у тебя файл весит метров 50. Может, возможно какой-нибудь SOHO-роутер с *wrt научить при включении создавать рамдиск и сливать на него из центра всё это добро, а потом раздавать спокойно, пока питание не отключат. Лишь бы памяти хватило.
Впрочем, если извратиться, то можно потырить файлы и в этом случае.

thesis ★★★★★
()
Ответ на: комментарий от thesis

да безопасность отступила на второй план, по сути, чтобы стырить файл, достаточно воткнуть простой свич между роутером и любой бездисковой станцией и отзеркалить на какой-нибудь порт.

памяти не хватит, скорее всего, хотя нужно глянуть, вообще это правда хорошая идея, я думал, ты имеешь в виду, сделать рамдиск на какой-нибудь отдельной бесдисковой станции и оттуда раздавать, но это тоже гемор, так как образ должен быть один, но если он один, то придется какую-то логику в каждый встраивать, чтобы загруженная система понимала, что она первая в сети и организовывалась, как ftp сервер, но это не проще, чем использование torrent)))

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

1 трекер имеет образ fs и раздает его через http

2 первая включившаяся станиция запрашивает .torrent файл и трекер отдает .torrent файл, где сказано, что образ fs лежит только на центральном сервере.

3 включается следующая станция из той же подсети и запрашивает .torrent файл. Теперь трекер генерирует уже новый .torrent, в котром сказано, что файл можно взять только у первой станции.

Таким образом файл через интернет скачивается всего один раз и каждая отдельная станция грузит файл только с соседних станций.

Серверную часть я бы еще осилил, а вот написать клиент, к сожалению не потяну.

IvanR ★★★
() автор топика
Ответ на: комментарий от IvanR

Ну да, я всегда имел в виду дополнительный хост для раздачи образа. А в протоколе bittorrent я слаб, вот и оффтоплю.
Кстати, есть же еще dc++. Задача интересная, да.
Как победишь, похвастайся, будь добр, где-нибудь в вики или еще где.

thesis ★★★★★
()
Ответ на: комментарий от thesis

я думаю, что будет роутер tp-link с воткнутой флешкой,который при старте будет проверять, допустим просто с помощью md5, что на флешке лежит самый свежий образ fs, если md5 не сходится, то качать его с сервера, а затем просто поднимается proftpd на том же роутере и раздает клиентам в сети образ.

IvanR ★★★
() автор топика
Ответ на: комментарий от Kalashnikov

А если надо поправить и для этого не учить лишний язык.

Napilnik ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.