java bittorrent库,Bt – Java 8中功能齐全的BitTorrent库

A full-featured BitTorrent implementation in Java 8

20170803100847_505.gif

Prerequisites

Currently, all peer connections are established via encryption negotation protocol (also called MSE handshake). Therefore, in order to be able to connect to peers you must install Java Cryptography Extension (JCE) Unlimited Strength Jurisdiction Policy . The reason for this requirement is that the MSE RC4 cipher uses 160 bit keys, while default Java installation allows at most 128 bit keys.

Usage

Most recent version available in Maven Central is 1.3 .

Declare the following dependencies in your project’s pom.xml :

com.github.atomashpolskiy

bt-core

${bt-version}

com.github.atomashpolskiy

bt-http-tracker-client

${bt-version}

com.github.atomashpolskiy

bt-dht

${bt-version}

Building from source

git clone https://github.com/atomashpolskiy/bt.git

cd bt

mvn clean install -DskipTests

Code sample

// 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 torrent file URL and download directory

URL torrentUrl = getTorrentUrl();

File targetDirectory = getTargetDirectory();

// 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)

.torrent(torrentUrl)

.autoLoadModules()

.module(dhtModule)

.build();

// launch

client.startAsync(state -> {

if (state.getPiecesRemaining() == 0) {

client.stop();

}

}, 1000).join();

What makes Bt stand out from the crowd

Flexibility

Being built around the Guice DI, Bt provides many options for tailoring the system for your specific needs. If something is a part of Bt, then it can be modified or substituted for your custom code.

Custom backends

Btis shipped with a standard file-system based backend (i.e. you can download the torrent file to a storage device). However, the backend details are abstracted from the message-level code. This means that you can use your own backend by providing a storage unit implementation.

Protocol extensions

One notable customization scenario is extending the standard BitTorrent protocol with your own messages. BitTorrent's BEP-10 provides a native support for protocol extensions, and implementation of this standard is already included in Bt . Contribute your own Messages , byte manipulating MessageHandlers , message consumers and producers ; supply any additional info in ExtendedHandshake .

Test infrastructure

To allow you test the changes that you've made to the core, Bt ships with a specialized framework for integration tests. Create an arbitrary-sized swarm of peers inside a simple JUnit test, set the number of seeders and leechers and start a real torrent session on your localhost. E.g. create one seeder and many leechers to stress test the network overhead; use a really large file and multiple peers to stress test your newest laptop's expensive SSD storage; or just launch the whole swarm in no-files mode and test your protocol extensions.

Parallel downloads

Bthas out-of-the-box support for multiple simultaneous torrent sessions with minimal system overhead. 1% CPU and 32M of RAM should be enough for everyone!

Java 8 CompletableFuture

Client API leverages the asynchronous java.util.concurrent.CompletableFuture to provide the most natural way for co-ordinating multiple torrent sessions. E.g. use CompletableFuture.allOf(client1.startAsync(...), client2.startAsync(...), ...).join() . Or create a more sophisticated processing pipeline.

And much more...

check out Release Notes for details!

Support and feedback

Any thoughts, ideas, criticism, etc. are welcome, as well as votes for new features and BEPs to be added. You have the following options to share your ideas, receive help or report bugs:

post your question on the Bt forum

List of supported BEPs

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值