Добро пожаловать в форум, Guest >> Войти | Регистрация | Поиск | Правила | | В избранное | Подписаться | ||
Все форумы / Java |
![]() ![]() |
Топик располагается на нескольких страницах: [1] 2 вперед Ctrl→ все |
Andrei T Member Откуда: Россия, Москва Сообщений: 175 |
Дорогие коллеги, хочу поделиться с форумом продуктом, который я пилил в течение последних двух месяцев. Наконец он начал приобретать законченный вид, и становится важным вопрос отзывов, пожеланий и критики. Приглашаю всех, кому интересна тема p2p обмена, ко мне на гитхаб: тынц Если у кого-то есть мысли, прошу не стесняться, давайте поговорим в этой теме о возможных направлениях дальнейшего развития! |
10 авг 16, 10:03 [19523384] Ответить | Цитировать Сообщить модератору |
mayton Member Откуда: loopback Сообщений: 50718 |
Смотреть в сорцы гитхаба - это не формат форума. ИМХО. Ты лучшей дай словесный брифинг. Что тебя мотивировало к созданию? Как это использовать? В чем преимущество для нас скажем в сравнении с Vuze? |
10 авг 16, 10:39 [19523561] Ответить | Цитировать Сообщить модератору |
no56892 Member Откуда: Сообщений: 590 |
В том, что бы поисковики проиндексировали видимо. |
10 авг 16, 10:58 [19523646] Ответить | Цитировать Сообщить модератору |
Andrei T Member Откуда: Россия, Москва Сообщений: 175 |
Пока что могу предложить посмотреть описание и примеры использования на гитхабе. Заранее прошу прощения, если нужна версия на русском..
Vuze это немного другая весовая категория. Насколько мне известно, это полновесный и непростой в изучении коммерческий клиент, единственная задача которого это качать торренты. С полноценным GUI, CLI и прочими фишками, которые нужны только разработчикам программ-клиентов для домашних пользователей. Т.е. наверно это правильный выбор, если стоит задача написать, к примеру, скачивалку для андроида. И есть $$$ на официальный саппорт (судя по форуму, количество багов прямо пропорционально функционалу, и правятся они весьма неспешно). Bt же мне видится как альтернатива ttorrent, bitlet и т.д. -- простая в освоении библиотека, на базе которой можно быстро и без особых проблем собрать какую-нибудь корпоративную систему репликации или просто поэкспериментировать с новыми BEP'ами, поучаствовать в развитии p2p в целом. Т.е. целевая аудитория - это лайт-энтерпрайз и исследователи-энтузиасты :) |
||||
10 авг 16, 12:25 [19524190] Ответить | Цитировать Сообщить модератору |
mayton Member Откуда: loopback Сообщений: 50718 |
Спасибо. По поводу репликации. Насколько это безопасно? Я так понимаю что нужно либо шифровать свой контент либо устанавливать какие-то строгие правила для p2p. Либо мы получим эдакий себе секрет полишинеля. |
||
10 авг 16, 12:34 [19524261] Ответить | Цитировать Сообщить модератору |
Andrei T Member Откуда: Россия, Москва Сообщений: 175 |
Если речь идет о репликации (и в целом обмену sensitive данными) по сетям общего пользования, то наверно нужно шифровать. Либо трафик на лету, либо раздаваемый контент. Стандартного похода тут нет, каждый клиент/либа реализуют это по-своему. В libtorrent, например, есть поддержка SSL с кодированием/декодированием на лету. Если обмен идет внутри корпоративной сети или по VPN, то наверно можно ограничиться цифровой подписью torrent-файла с информацией о раздаче. От MitM торренты защищены автоматически -- в torrent-файле есть чексуммы для всех раздаваемых данных. На тему использования сертификатов и подписей есть стандартный BEP: http://www.bittorrent.org/beps/bep_0035.html. Вот его было бы неплохо реализовать |
||
10 авг 16, 13:05 [19524490] Ответить | Цитировать Сообщить модератору |
Andrei T Member Откуда: Россия, Москва Сообщений: 175 |
Вообще вы можно сказать сходу попали в яблочко. Пожалуй две наиболее востребованные фичи сейчас - это DHT и security. В совокупности они обеспечивают полностью защищенный децентрализованный обмен данными. Для любительской библиотеки реализация этих двух моемнтов обеспечивает выход в "высшую лигу". Имхо :) |
10 авг 16, 13:16 [19524569] Ответить | Цитировать Сообщить модератору |
mayton Member Откуда: loopback Сообщений: 50718 |
Нелетает пока твой аскетичный example:public static void main( String[] args ) throws Exception { // get metainfo file url and download location from the program arguments URL metainfoUrl = new URL("http://mirror.as43289.net/centos/7/isos/x86_64/CentOS-7-x86_64-DVD-1511.torrent"); File targetDirectory = new File("out"); // create default shared runtime without extensions BtRuntime runtime = BtRuntimeBuilder.defaultRuntime(); SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder". SLF4J: Defaulting to no-operation (NOP) logger implementation SLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for further details. Exception in thread "main" bt.BtException: Wrong number of chunk hashes in the torrent: too many at bt.data.DataDescriptor.init(DataDescriptor.java:118) at bt.data.DataDescriptor.<init>(DataDescriptor.java:38) at bt.data.DataDescriptorFactory.createDescriptor(DataDescriptorFactory.java:18) at bt.service.AdhocTorrentRegistry.lambda$getOrCreateDescriptor$1(AdhocTorrentRegistry.java:54) at java.util.Optional.orElseGet(Optional.java:267) at bt.service.AdhocTorrentRegistry.getOrCreateDescriptor(AdhocTorrentRegistry.java:51) at bt.Bt.createClient(Bt.java:85) at bt.Bt.lambda$build$0(Bt.java:73) at bt.Bt$LazyBtClient.initClient(Bt.java:118) at bt.Bt$LazyBtClient.startAsync(Bt.java:133) at mayton.App.main(App.java:35) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) at com.intellij.rt.execution.application.AppMain.main(AppMain.java:147) Чет не так? |
10 авг 16, 16:27 [19525679] Ответить | Цитировать Сообщить модератору |
Andrei T Member Откуда: Россия, Москва Сообщений: 175 |
mayton, спасибо за потраченное время, вам повезло с раздачей, это досадный и коварный баг) зафиксил |
10 авг 16, 21:09 [19526759] Ответить | Цитировать Сообщить модератору |
mayton Member Откуда: loopback Сообщений: 50718 |
Andrei T, я потратил около 5 минут. Вам тоже спасибо. Интересный софт и я попробую для себя придумать ему применение. |
11 авг 16, 01:22 [19527377] Ответить | Цитировать Сообщить модератору |
Andrei T Member Откуда: Россия, Москва Сообщений: 175 |
Спешу поделиться новостями -- готовится к релизу версия 1.1. Помимо нескольких важных доработок и багфиксов также добавлен модуль DHT: https://github.com/atomashpolskiy/bt/tree/dht-experimental Таким образом, качает теперь со свистом. |
14 мар 17, 16:22 [20294298] Ответить | Цитировать Сообщить модератору |
Andrei T Member Откуда: Россия, Москва Сообщений: 175 |
На днях зарелизил версию 1.2 с полной поддержкой стандартного протокола шифрования сообщений. Может быть актуально как для обычных торрент-качалок, так и для внутрикорпоративного использования. Также на сайте появилось несколько новых туториалов по использованию либы: 1. настройка шифрования сообщений 2. как добавить в фреймворк кастомную фичу 3. за 10 минут пишем p2p мессенджер с кастомными сообщениями (не bittorrent) Всем добра! |
31 май 17, 12:57 [20527049] Ответить | Цитировать Сообщить модератору |
Andrei T Member Откуда: Россия, Москва Сообщений: 175 |
В версии 1.3 добавлены магнет-ссылки и, наконец-то, опубликован в maven central модуль для работы с DHT Посмотреть демо |
2 авг 17, 16:13 [20695426] Ответить | Цитировать Сообщить модератору |
Andrei T Member Откуда: Россия, Москва Сообщений: 175 |
Апну тему :) С августа было два релиза, в т.ч. ряд значительных улучшений: - поддержка NIO файловых систем (например, Jimfs, an in-memory file system for Java 7+) - события с колбэками и новые методы в клиентском API для более удобного управления загрузкой - миграция на NIO селектор для приема сообщений от пиров, что существенно уменьшило расход ресурсов - более удобный API для регистрации расширений Более подробно здесь: http://atomashpolskiy.github.io/bt/ |
23 окт 17, 17:55 [20893385] Ответить | Цитировать Сообщить модератору |
Andrei T Member Откуда: Россия, Москва Сообщений: 175 |
На днях зарелизил версию 1.6. Основное нововведение - Local Service Discovery, или поиск локальных пиров через мультикаст. Также было сделано несколько минорных улучшений: - возможность отключать стандартные расширения типа Peer Exchange и вышеупомянутого LSD - автоматическое отключение шифрования, если используемая JRE не поддерживает длинные ключи - оптимизация расхода памяти посредством переиспользования send/receive буферов в новых соединениях Велкам! |
31 янв 18, 13:26 [21154107] Ответить | Цитировать Сообщить модератору |
kazeboba Member Откуда: Сообщений: 1 |
Привет, есть ли возможность осуществлять закачку частей торрента последовательно(для медиаплеера)? Если да, то как? Спасибо! |
25 фев 18, 15:49 [21216817] Ответить | Цитировать Сообщить модератору |
Basil A. Sidorov Member Откуда: Сообщений: 10881 |
Пиявки "скачивают" в том порядке, какой сложится на гуще раздающих. Хочется упорядоченности "для медиаплеера" - используйте более другой протокол. |
25 фев 18, 17:28 [21216991] Ответить | Цитировать Сообщить модератору |
Andrei T Member Откуда: Россия, Москва Сообщений: 175 |
Привет! Да, такая возможность есть. Надо в билдере клиента указать последовательный "селектор". Используя пример кода из основного README, получится примерно так: // enable multithreaded verification of torrent data Config config = new Config() { @Override public int getNumOfHashingThreads() { return Runtime.getRuntime().availableProcessors() * 2; } }; // enable bootstrapping from public routers Module dhtModule = new DHTModule(new DHTConfig() { @Override public boolean shouldUseRouterBootstrap() { return true; } }); // get download directory Path targetDirectory = new File(...).toPath(); // create file system based backend for torrent data Storage storage = new FileSystemStorage(targetDirectory); // create client with a private runtime BtClient client = Bt.client() .config(config) .storage(storage) .magnet("magnet:?xt=urn:btih:af0d9aa01a9ae123a73802cfa58ccaf355eb19f1") .autoLoadModules() .module(dhtModule) .selector(SequentialSelector.sequential()) .stopWhenDownloaded() .build(); // launch client.startAsync().join(); Более реальный пример настройки и создания клиента можно посмотреть в CLI загрузчике и его README. В частности, CLI применяет последовательную закачку, если указан флаг -S. Очень удобно для просмотра фильмов параллельно с загрузкой |
||
25 фев 18, 20:15 [21217324] Ответить | Цитировать Сообщить модератору |
Andrei T Member Откуда: Россия, Москва Сообщений: 175 |
Опубликована моя статья на habrahabr "Пишем свой BitTorrent клиент" https://habrahabr.ru/post/350076/ |
27 фев 18, 18:46 [21223180] Ответить | Цитировать Сообщить модератору |
PPA Member Откуда: Караганда -> Липецк Сообщений: 812 |
Andrei T, > на базе которой можно быстро и без особых проблем собрать какую-нибудь корпоративную систему репликации А можно ссылку на простой пример синхронизации каталога? |
4 окт 18, 11:28 [21694958] Ответить | Цитировать Сообщить модератору |
Andrei T Member Откуда: Россия, Москва Сообщений: 175 |
Пример есть здесь https://github.com/atomashpolskiy/bt/tree/master/examples/src/main/java/datasharing Не хватает, правда, автоматического создания торрента для каталога. Пока что для этого нужно использовать какую-нибудь стороннюю тулзу. |
6 окт 18, 12:58 [21696988] Ответить | Цитировать Сообщить модератору |
mayton Member Откуда: loopback Сообщений: 50718 |
Хм. Версии Google GUice надо поднять до 4.2.2 иначе не собирается. Ну по крайней мере у меня.<guice-version>4.2.2</guice-version> И я-бы обратил внимание на Warnings во время package. |
4 дек 18, 00:55 [21752491] Ответить | Цитировать Сообщить модератору |
mayton Member Откуда: loopback Сообщений: 50718 |
UP. Автор ты где? Есть парочка вопросов по DHT/Kademlia/P2P. |
16 дек 18, 21:32 [21765531] Ответить | Цитировать Сообщить модератору |
Andrei T Member Откуда: Россия, Москва Сообщений: 175 |
Я тут |
17 дек 18, 10:54 [21765707] Ответить | Цитировать Сообщить модератору |
mayton Member Откуда: loopback Сообщений: 50718 |
Современные бит-торрент клиенты используют DHT/Kademlia для поиска раздающих? |
17 дек 18, 15:09 [21766046] Ответить | Цитировать Сообщить модератору |
Топик располагается на нескольких страницах: [1] 2 вперед Ctrl→ все |
Все форумы / Java | ![]() |