Как использовать ttorrent для создания торрент-файла?

Я начинаю использовать ttorrent (библиотека Java BitTorrent от Turn) для создания папки, синхронизируемой по локальной сети.

Моя цель — использовать торрент-протокол для синхронизации больших файлов на жестких дисках узлов. Но я не вижу, как создать новый торрент-файл с помощью ttorrent.

Мне нужно: 1) В один узел добавляется новый файл. 2) Другие узлы получают торрент-файл и начинают загружать этот файл с первого узла или части с других узлов, которые уже скачали эту часть файла, ускоряя время загрузки. Таким образом, я могу избежать того, чтобы каждый узел загружал гигабайты с сервера (и ждал весь день).

Я не могу продолжать, не зная, как создать торрент-файл для этого нового добавленного файла (или существует ли лучший и умный способ).

Я могу иметь центральную точку для отслеживания.

Спасибо.


person Magno C    schedule 09.02.2015    source источник
comment
Я рекомендую использовать торренты с одним файлом, иначе вам придется перефразировать все файлы, если вы не хотите делиться ими. Или, в качестве альтернативы, используйте взломанный файл заполнения BitComet, который не очень популярен среди общедоступных торрентов, но должен работать для вас.   -  person CodesInChaos    schedule 10.02.2015


Ответы (1)


Благодаря фуджонван

public class Main {

    public static void main(String[] args) {
        // File parent = new File("d:/echo-insurance.backup");
        String sharedFile = "d:/echo-insurance.backup";

        try {
            Tracker tracker = new Tracker( InetAddress.getLocalHost() );
            tracker.start();
            System.out.println("Tracker running.");

            System.out.println( "create new .torrent metainfo file..." );
            Torrent torrent = Torrent.create(new File(sharedFile), tracker.getAnnounceUrl().toURI(), "createdByDarren");

            System.out.println("save .torrent to file...");

            FileOutputStream fos = new FileOutputStream("d:/seed.torrent");
            torrent.save( fos );            
            fos.close();

        } catch ( Exception e ) {
            e.printStackTrace();
        }

    }

}
person Magno C    schedule 10.02.2015