在好例子网,分享、交流、成长!
您当前所在位置:首页Others 开发实例一般编程问题 → Bt:Java 8全功能BitTorrent实现

Bt:Java 8全功能BitTorrent实现

一般编程问题

下载此实例
  • 开发语言:Others
  • 实例大小:1.24M
  • 下载次数:1
  • 浏览次数:112
  • 发布时间:2024-03-07
  • 实例类别:一般编程问题
  • 发 布 人:chenxiaolan
  • 文件格式:.zip
  • 所需积分:2
 相关标签:

实例介绍

【实例简介】
Bt是一个完整的Java 8 BitTorrent实现,支持peer exchange、磁力链接、DHT、加密等多种功能。该项目遵循BitTorrent协议规范,支持多项BEPs和扩展,提供丰富的资源、示例代码和使用说明。Bt具有灵活性、自定义后端、协议扩展、并行下载、部分下载等特点,同时提供Java 8 CompletableFuture支持。

【实例截图】

from clipboard

【核心代码】
文件清单
└── bt-62181084567c411ba9351abc88b3a017dae380cd
    ├── appveyor.yml
    ├── bt-bencoding
    │   ├── pom.xml
    │   └── src
    │       ├── main
    │       │   └── java
    │       │       └── bt
    │       │           └── bencoding
    │       │               ├── BEType.java
    │       │               ├── model
    │       │               │   ├── BaseBEObjectModel.java
    │       │               │   ├── BEIntegerModel.java
    │       │               │   ├── BEListModel.java
    │       │               │   ├── BEMapModel.java
    │       │               │   ├── BEObject.java
    │       │               │   ├── BEObjectModelBuilderFactory.java
    │       │               │   ├── BEObjectModelBuilder.java
    │       │               │   ├── BEObjectModel.java
    │       │               │   ├── BEObjectModelLoader.java
    │       │               │   ├── BEStringModel.java
    │       │               │   ├── ClassUtil.java
    │       │               │   ├── DefaultModelBuilderFactory.java
    │       │               │   ├── JUMModelBuilder.java
    │       │               │   ├── rule
    │       │               │   │   ├── ExclusiveRule.java
    │       │               │   │   ├── RequiredRule.java
    │       │               │   │   └── Rule.java
    │       │               │   ├── TypesMapping.java
    │       │               │   ├── ValidationResult.java
    │       │               │   └── YamlBEObjectModelLoader.java
    │       │               ├── serializers
    │       │               │   ├── BEEncoder.java
    │       │               │   ├── BEIntegerDecoder.java
    │       │               │   ├── BEListDecoder.java
    │       │               │   ├── BEMapDecoder.java
    │       │               │   ├── BEObjectDecoder.java
    │       │               │   ├── BEParser.java
    │       │               │   ├── BEPrefixedTypeDecoder.java
    │       │               │   ├── BEStringDecoder.java
    │       │               │   ├── BtParseException.java
    │       │               │   └── Scanner.java
    │       │               └── types
    │       │                   ├── BEInteger.java
    │       │                   ├── BEList.java
    │       │                   ├── BEMap.java
    │       │                   └── BEString.java
    │       └── test
    │           ├── java
    │           │   └── bt
    │           │       └── bencoding
    │           │           ├── BEEncoderTest.java
    │           │           ├── BEParserTest.java
    │           │           └── model
    │           │               └── YamlBEObjectModelLoaderTest.java
    │           └── resources
    │               └── bt
    │                   └── bencoding
    │                       └── model
    │                           ├── metainfo_correct.yml
    │                           ├── metainfo_missing_model.yml
    │                           ├── single_file_correct.torrent
    │                           ├── single_file_exclusive_properties.torrent
    │                           ├── single_file_invalid_type.torrent
    │                           └── single_file_missing_property.torrent
    ├── bt-cli
    │   ├── pom.xml
    │   ├── README.md
    │   └── src
    │       └── main
    │           ├── java
    │           │   └── bt
    │           │       └── cli
    │           │           ├── CliClient.java
    │           │           ├── CliFileSelector.java
    │           │           ├── KeyStrokeBinding.java
    │           │           ├── Options.java
    │           │           └── SessionStatePrinter.java
    │           └── resources
    │               └── log4j2.xml
    ├── bt-core
    │   ├── pom.xml
    │   └── src
    │       └── main
    │           ├── java
    │           │   └── bt
    │           │       ├── BaseClientBuilder.java
    │           │       ├── BtClientBuilder.java
    │           │       ├── BtException.java
    │           │       ├── Bt.java
    │           │       ├── BufferingMap.java
    │           │       ├── CountingThreadFactory.java
    │           │       ├── data
    │           │       │   ├── Bitfield.java
    │           │       │   ├── BlockSet.java
    │           │       │   ├── ChunkDescriptor.java
    │           │       │   ├── ChunkVerifier.java
    │           │       │   ├── CompletableTorrentFile.java
    │           │       │   ├── DataDescriptorFactory.java
    │           │       │   ├── DataDescriptor.java
    │           │       │   ├── DataRange.java
    │           │       │   ├── DataRangeVisitor.java
    │           │       │   ├── DataReaderChannel.java
    │           │       │   ├── DataReaderFactory.java
    │           │       │   ├── DataReader.java
    │           │       │   ├── DefaultChunkDescriptor.java
    │           │       │   ├── DefaultChunkVerifier.java
    │           │       │   ├── DefaultDataDescriptor.java
    │           │       │   ├── digest
    │           │       │   │   ├── Digester.java
    │           │       │   │   ├── JavaSecurityDigester.java
    │           │       │   │   ├── SHA1Digester.java
    │           │       │   │   └── SoftThreadLocal.java
    │           │       │   ├── file
    │           │       │   │   ├── CachedOpenFile.java
    │           │       │   │   ├── FileCacheKey.java
    │           │       │   │   ├── FileSystemStorage.java
    │           │       │   │   ├── FileSystemStorageUnit.java
    │           │       │   │   ├── OpenFileCache.java
    │           │       │   │   └── PathNormalizer.java
    │           │       │   ├── IDataDescriptorFactory.java
    │           │       │   ├── LocalBitfield.java
    │           │       │   ├── PeerBitfield.java
    │           │       │   ├── PieceUtils.java
    │           │       │   ├── range
    │           │       │   │   ├── BlockRange.java
    │           │       │   │   ├── ByteRange.java
    │           │       │   │   ├── DelegatingDataRange.java
    │           │       │   │   ├── DelegatingRange.java
    │           │       │   │   ├── MutableBlockSet.java
    │           │       │   │   ├── Range.java
    │           │       │   │   ├── Ranges.java
    │           │       │   │   ├── SynchronizedBlockSet.java
    │           │       │   │   ├── SynchronizedDataRange.java
    │           │       │   │   └── SynchronizedRange.java
    │           │       │   ├── ReadWriteDataRange.java
    │           │       │   ├── Storage.java
    │           │       │   └── StorageUnit.java
    │           │       ├── DefaultClient.java
    │           │       ├── event
    │           │       │   ├── BaseEvent.java
    │           │       │   ├── EventBus.java
    │           │       │   ├── Event.java
    │           │       │   ├── EventSink.java
    │           │       │   ├── EventSource.java
    │           │       │   ├── MetadataAvailableEvent.java
    │           │       │   ├── PeerBitfieldUpdatedEvent.java
    │           │       │   ├── PeerConnectedEvent.java
    │           │       │   ├── PeerDisconnectedEvent.java
    │           │       │   ├── PeerDiscoveredEvent.java
    │           │       │   ├── PieceVerifiedEvent.java
    │           │       │   ├── TorrentEvent.java
    │           │       │   ├── TorrentStartedEvent.java
    │           │       │   └── TorrentStoppedEvent.java
    │           │       ├── LazyClient.java
    │           │       ├── magnet
    │           │       │   ├── MagnetUri.java
    │           │       │   ├── MagnetUriParser.java
    │           │       │   ├── UtMetadata.java
    │           │       │   └── UtMetadataMessageHandler.java
    │           │       ├── metainfo
    │           │       │   ├── DefaultTorrentFile.java
    │           │       │   ├── DefaultTorrent.java
    │           │       │   ├── IMetadataService.java
    │           │       │   ├── MetadataConstants.java
    │           │       │   ├── MetadataService.java
    │           │       │   ├── TorrentFile.java
    │           │       │   ├── TorrentId.java
    │           │       │   ├── Torrent.java
    │           │       │   └── TorrentSource.java
    │           │       ├── module
    │           │       │   ├── BitTorrentProtocol.java
    │           │       │   ├── BtModuleProvider.java
    │           │       │   ├── ClientExecutor.java
    │           │       │   ├── Contribute.java
    │           │       │   ├── ExtendedMessageHandlers.java
    │           │       │   ├── MessageHandlers.java
    │           │       │   ├── MessagingAgents.java
    │           │       │   ├── PeerConnectionSelector.java
    │           │       │   ├── ProtocolModuleExtender.java
    │           │       │   ├── ProtocolModule.java
    │           │       │   ├── ServiceModuleExtender.java
    │           │       │   ├── ServiceModule.java
    │           │       │   └── TrackerFactories.java
    │           │       ├── net
    │           │       │   ├── BigIntegers.java
    │           │       │   ├── BitfieldConnectionHandler.java
    │           │       │   ├── buffer
    │           │       │   │   ├── BorrowedBuffer.java
    │           │       │   │   ├── BufferedData.java
    │           │       │   │   ├── BufferManager.java
    │           │       │   │   ├── BufferMutator.java
    │           │       │   │   ├── Buffers.java
    │           │       │   │   ├── ByteBufferView.java
    │           │       │   │   ├── DelegatingByteBufferView.java
    │           │       │   │   ├── IBufferManager.java
    │           │       │   │   └── SplicedByteBufferView.java
    │           │       │   ├── ByteChannelReader.java
    │           │       │   ├── ConnectionHandlerFactory.java
    │           │       │   ├── ConnectionHandler.java
    │           │       │   ├── ConnectionKey.java
    │           │       │   ├── ConnectionResult.java
    │           │       │   ├── ConnectionRoutine.java
    │           │       │   ├── ConnectionSource.java
    │           │       │   ├── crypto
    │           │       │   │   ├── CipherBufferMutator.java
    │           │       │   │   ├── EncryptedChannel.java
    │           │       │   │   ├── MSEHandshakeProcessor.java
    │           │       │   │   └── MSEKeyPairGenerator.java
    │           │       │   ├── DataReceiver.java
    │           │       │   ├── DataReceivingLoop.java
    │           │       │   ├── extended
    │           │       │   │   ├── ExtendedHandshakeConsumer.java
    │           │       │   │   └── ExtendedProtocolHandshakeHandler.java
    │           │       │   ├── HandshakeHandler.java
    │           │       │   ├── IConnectionHandlerFactory.java
    │           │       │   ├── IConnectionSource.java
    │           │       │   ├── IMessageDispatcher.java
    │           │       │   ├── IncomingConnectionListener.java
    │           │       │   ├── IncomingHandshakeHandler.java
    │           │       │   ├── InetPeerAddress.java
    │           │       │   ├── InetPeer.java
    │           │       │   ├── InternetProtocolUtils.java
    │           │       │   ├── IPeerConnectionFactory.java
    │           │       │   ├── IPeerConnectionPool.java
    │           │       │   ├── MessageDispatcher.java
    │           │       │   ├── OutgoingHandshakeHandler.java
    │           │       │   ├── PeerConnectionAcceptor.java
    │           │       │   ├── PeerConnectionFactory.java
    │           │       │   ├── PeerConnection.java
    │           │       │   ├── PeerConnectionPool.java
    │           │       │   ├── PeerId.java
    │           │       │   ├── Peer.java
    │           │       │   ├── pipeline
    │           │       │   │   ├── BufferedPieceRegistry.java
    │           │       │   │   ├── ChannelHandlerContext.java
    │           │       │   │   ├── ChannelHandler.java
    │           │       │   │   ├── ChannelPipelineBuilder.java
    │           │       │   │   ├── ChannelPipelineFactory.java
    │           │       │   │   ├── ChannelPipeline.java
    │           │       │   │   ├── DefaultChannelPipeline.java
    │           │       │   │   ├── IBufferedPieceRegistry.java
    │           │       │   │   ├── IChannelPipelineFactory.java
    │           │       │   │   ├── InboundMessageProcessor.java
    │           │       │   │   ├── MessageDeserializer.java
    │           │       │   │   ├── MessageSerializer.java
    │           │       │   │   └── SocketChannelHandler.java
    │           │       │   ├── portmapping
    │           │       │   │   ├── impl
    │           │       │   │   │   ├── NoOpPortMapper.java
    │           │       │   │   │   ├── PortMappingInitializer.java
    │           │       │   │   │   └── PortMappingModule.java
    │           │       │   │   ├── PortMapper.java
    │           │       │   │   └── PortMapProtocol.java
    │           │       │   ├── SharedSelector.java
    │           │       │   ├── SocketChannelConnectionAcceptor.java
    │           │       │   ├── SocketPeerConnection.java
    │           │       │   └── WriteOnlyPeerConnection.java
    │           │       ├── peer
    │           │       │   ├── IPeerRegistry.java
    │           │       │   ├── lan
    │           │       │   │   ├── AnnounceGroupChannel.java
    │           │       │   │   ├── AnnounceGroup.java
    │           │       │   │   ├── AnnounceMessage.java
    │           │       │   │   ├── Cookie.java
    │           │       │   │   ├── ILocalServiceDiscoveryInfo.java
    │           │       │   │   ├── ILocalServiceDiscoveryService.java
    │           │       │   │   ├── LocalServiceDiscoveryAnnouncer.java
    │           │       │   │   ├── LocalServiceDiscoveryConfig.java
    │           │       │   │   ├── LocalServiceDiscoveryInfo.java
    │           │       │   │   ├── LocalServiceDiscoveryModule.java
    │           │       │   │   ├── LocalServiceDiscoveryPeerSourceFactory.java
    │           │       │   │   └── LocalServiceDiscoveryService.java
    │           │       │   ├── PeerOptions.java
    │           │       │   ├── PeerRegistry.java
    │           │       │   ├── PeerSourceFactory.java
    │           │       │   ├── PeerSource.java
    │           │       │   ├── ScheduledPeerSource.java
    │           │       │   ├── TrackerPeerSourceFactory.java
    │           │       │   └── TrackerPeerSource.java
    │           │       ├── peerexchange
    │           │       │   ├── PeerEvent.java
    │           │       │   ├── PeerExchangeConfig.java
    │           │       │   ├── PeerExchange.java
    │           │       │   ├── PeerExchangeMessageHandler.java
    │           │       │   ├── PeerExchangeModule.java
    │           │       │   ├── PeerExchangePeerSourceFactory.java
    │           │       │   └── PeerExchangePeerSource.java
    │           │       ├── processor
    │           │       │   ├── ChainProcessor.java
    │           │       │   ├── ContextFinalizer.java
    │           │       │   ├── listener
    │           │       │   │   ├── ListenerSource.java
    │           │       │   │   └── ProcessingEvent.java
    │           │       │   ├── magnet
    │           │       │   │   ├── FetchMetadataStage.java
    │           │       │   │   ├── InitializeMagnetTorrentProcessingStage.java
    │           │       │   │   ├── MagnetContext.java
    │           │       │   │   └── ProcessMagnetTorrentStage.java
    │           │       │   ├── ProcessingContext.java
    │           │       │   ├── ProcessingStage.java
    │           │       │   ├── ProcessorFactory.java
    │           │       │   ├── Processor.java
    │           │       │   ├── RoutingProcessingStage.java
    │           │       │   ├── TerminateOnErrorProcessingStage.java
    │           │       │   ├── torrent
    │           │       │   │   ├── ChooseFilesStage.java
    │           │       │   │   ├── CreateSessionStage.java
    │           │       │   │   ├── FetchTorrentStage.java
    │           │       │   │   ├── FilePiecePriorityMapper.java
    │           │       │   │   ├── InitializeTorrentProcessingStage.java
    │           │       │   │   ├── ProcessTorrentStage.java
    │           │       │   │   ├── SeedStage.java
    │           │       │   │   ├── TorrentContextFinalizer.java
    │           │       │   │   └── TorrentContext.java
    │           │       │   └── TorrentProcessorFactory.java
    │           │       ├── protocol
    │           │       │   ├── Bitfield.java
    │           │       │   ├── BitOrder.java
    │           │       │   ├── Cancel.java
    │           │       │   ├── Choke.java
    │           │       │   ├── crypto
    │           │       │   │   ├── EncryptionPolicy.java
    │           │       │   │   └── MSECipher.java
    │           │       │   ├── DecodingContext.java
    │           │       │   ├── EncodingContext.java
    │           │       │   ├── extended
    │           │       │   │   ├── AlphaSortedMapping.java
    │           │       │   │   ├── ExtendedHandshakeFactory.java
    │           │       │   │   ├── ExtendedHandshake.java
    │           │       │   │   ├── ExtendedHandshakeMessageHandler.java
    │           │       │   │   ├── ExtendedMessage.java
    │           │       │   │   ├── ExtendedMessageTypeMapping.java
    │           │       │   │   └── ExtendedProtocol.java
    │           │       │   ├── handler
    │           │       │   │   ├── BaseMessageHandler.java
    │           │       │   │   ├── BitfieldHandler.java
    │           │       │   │   ├── CancelHandler.java
    │           │       │   │   ├── ChokeHandler.java
    │           │       │   │   ├── HaveHandler.java
    │           │       │   │   ├── InterestedHandler.java
    │           │       │   │   ├── MessageHandler.java
    │           │       │   │   ├── NotInterestedHandler.java
    │           │       │   │   ├── PieceHandler.java
    │           │       │   │   ├── RequestHandler.java
    │           │       │   │   ├── UnchokeHandler.java
    │           │       │   │   └── UniqueMessageHandler.java
    │           │       │   ├── HandshakeFactory.java
    │           │       │   ├── Handshake.java
    │           │       │   ├── Have.java
    │           │       │   ├── IExtendedHandshakeFactory.java
    │           │       │   ├── IHandshakeFactory.java
    │           │       │   ├── Interested.java
    │           │       │   ├── InvalidMessageException.java
    │           │       │   ├── KeepAlive.java
    │           │       │   ├── Message.java
    │           │       │   ├── NotInterested.java
    │           │       │   ├── Piece.java
    │           │       │   ├── Protocol.java
    │           │       │   ├── Protocols.java
    │           │       │   ├── Request.java
    │           │       │   ├── StandardBittorrentProtocol.java
    │           │       │   └── Unchoke.java
    │           │       ├── runtime
    │           │       │   ├── BtClient.java
    │           │       │   ├── BtRuntimeBuilder.java
    │           │       │   ├── BtRuntime.java
    │           │       │   └── Config.java
    │           │       ├── service
    │           │       │   ├── ApplicationService.java
    │           │       │   ├── ClasspathApplicationService.java
    │           │       │   ├── CryptoUtil.java
    │           │       │   ├── ExecutorServiceProvider.java
    │           │       │   ├── IdentityService.java
    │           │       │   ├── IRuntimeLifecycleBinder.java
    │           │       │   ├── LifecycleBinding.java
    │           │       │   ├── NetworkUtil.java
    │           │       │   ├── RuntimeLifecycleBinder.java
    │           │       │   ├── VersionAwareIdentityService.java
    │           │       │   └── Version.java
    │           │       ├── StandaloneClientBuilder.java
    │           │       ├── torrent
    │           │       │   ├── AdhocTorrentRegistry.java
    │           │       │   ├── annotation
    │           │       │   │   ├── Consumes.java
    │           │       │   │   └── Produces.java
    │           │       │   ├── BitfieldBasedStatistics.java
    │           │       │   ├── callbacks
    │           │       │   │   └── FileDownloadCompleteCallback.java
    │           │       │   ├── compiler
    │           │       │   │   ├── CompilerVisitor.java
    │           │       │   │   ├── ConsumerInfo.java
    │           │       │   │   ├── MessagingAgentCompiler.java
    │           │       │   │   └── ProducerInfo.java
    │           │       │   ├── data
    │           │       │   │   ├── BlockCache.java
    │           │       │   │   ├── BlockReader.java
    │           │       │   │   ├── BlockRead.java
    │           │       │   │   ├── BlockWrite.java
    │           │       │   │   ├── DataWorker.java
    │           │       │   │   ├── DefaultDataWorker.java
    │           │       │   │   ├── LRUBlockCache.java
    │           │       │   │   └── NoCache.java
    │           │       │   ├── DefaultTorrentDescriptor.java
    │           │       │   ├── DefaultTorrentSessionState.java
    │           │       │   ├── fileselector
    │           │       │   │   ├── FilePriority.java
    │           │       │   │   ├── FilePrioritySelector.java
    │           │       │   │   ├── FilePrioritySkipSelector.java
    │           │       │   │   ├── SelectionResult.java
    │           │       │   │   ├── TorrentFileSelector.java
    │           │       │   │   └── UpdatedFilePriority.java
    │           │       │   ├── maker
    │           │       │   │   ├── TorrentBuilder.java
    │           │       │   │   └── TorrentMaker.java
    │           │       │   ├── messaging
    │           │       │   │   ├── Assignment.java
    │           │       │   │   ├── Assignments.java
    │           │       │   │   ├── BitfieldCollectingConsumer.java
    │           │       │   │   ├── BitfieldConsumer.java
    │           │       │   │   ├── Choker.java
    │           │       │   │   ├── ConnectionState.java
    │           │       │   │   ├── DefaultMessageRouter.java
    │           │       │   │   ├── ExchangedMetadata.java
    │           │       │   │   ├── GenericConsumer.java
    │           │       │   │   ├── IPeerWorkerFactory.java
    │           │       │   │   ├── Mapper.java
    │           │       │   │   ├── MessageConsumer.java
    │           │       │   │   ├── MessageContext.java
    │           │       │   │   ├── MessageProducer.java
    │           │       │   │   ├── MessageRouter.java
    │           │       │   │   ├── MetadataConsumer.java
    │           │       │   │   ├── MetadataProducer.java
    │           │       │   │   ├── PeerRequestConsumer.java
    │           │       │   │   ├── PeerWorkerFactory.java
    │           │       │   │   ├── PeerWorker.java
    │           │       │   │   ├── PieceConsumer.java
    │           │       │   │   ├── RequestProducer.java
    │           │       │   │   ├── RoutingPeerWorker.java
    │           │       │   │   └── TorrentWorker.java
    │           │       │   ├── PieceStatistics.java
    │           │       │   ├── selector
    │           │       │   │   ├── IncompletePiecesValidator.java
    │           │       │   │   ├── PackedIntComparator.java
    │           │       │   │   ├── PieceSelector.java
    │           │       │   │   ├── PrioritizedPieceSelector.java
    │           │       │   │   ├── RandomizedRarestFirstSelector.java
    │           │       │   │   ├── RarestFirstSelector.java
    │           │       │   │   ├── SequentialSelector.java
    │           │       │   │   ├── ShuffleUtils.java
    │           │       │   │   └── ValidatingSelector.java
    │           │       │   ├── TorrentDescriptor.java
    │           │       │   ├── TorrentRegistry.java
    │           │       │   ├── TorrentSessionState.java
    │           │       │   └── TrackerAnnouncer.java
    │           │       ├── TorrentClientBuilder.java
    │           │       └── tracker
    │           │           ├── AnnounceKey.java
    │           │           ├── CompactPeerInfo.java
    │           │           ├── ITrackerService.java
    │           │           ├── MultiTracker.java
    │           │           ├── SecretKey.java
    │           │           ├── TrackerFactory.java
    │           │           ├── Tracker.java
    │           │           ├── TrackerRequestBuilder.java
    │           │           ├── TrackerResponse.java
    │           │           ├── TrackerService.java
    │           │           └── udp
    │           │               ├── AnnounceRequest.java
    │           │               ├── AnnounceResponseHandler.java
    │           │               ├── ConnectRequest.java
    │           │               ├── ConnectResponseHandler.java
    │           │               ├── Session.java
    │           │               ├── UdpMessageWorker.java
    │           │               ├── UdpTrackerFactory.java
    │           │               ├── UdpTracker.java
    │           │               ├── UdpTrackerMessage.java
    │           │               └── UdpTrackerResponseHandler.java
    │           └── resources
    │               ├── infodict.yml
    │               ├── metainfo.yml
    │               └── tracker_response.yml
    ├── bt-dht
    │   ├── bt-dht
    │   │   ├── pom.xml
    │   │   └── src
    │   │       ├── main
    │   │       │   ├── java
    │   │       │   │   └── bt
    │   │       │   │       ├── dht
    │   │       │   │       │   ├── DHTConfig.java
    │   │       │   │       │   ├── DHTHandshakeHandler.java
    │   │       │   │       │   ├── DHTModule.java
    │   │       │   │       │   ├── DHTModuleProvider.java
    │   │       │   │       │   ├── DHTPeerSourceFactory.java
    │   │       │   │       │   ├── DHTPeerSource.java
    │   │       │   │       │   ├── DHTService.java
    │   │       │   │       │   ├── MldhtService.java
    │   │       │   │       │   └── stream
    │   │       │   │       │       └── StreamAdapter.java
    │   │       │   │       └── protocol
    │   │       │   │           ├── handler
    │   │       │   │           │   └── PortMessageHandler.java
    │   │       │   │           └── Port.java
    │   │       │   └── resources
    │   │       │       └── META-INF
    │   │       │           └── services
    │   │       │               └── bt.module.BtModuleProvider
    │   │       └── test
    │   │           └── java
    │   │               └── bt
    │   │                   ├── dht
    │   │                   │   └── stream
    │   │                   │       └── StreamAdapterTest.java
    │   │                   └── protocol
    │   │                       ├── PortMatcher.java
    │   │                       └── PortMessageHandlerTest.java
    │   ├── patch
    │   │   └── allow-bogon-addresses-in-private-dht.patch
    │   ├── pom.xml
    │   ├── README.md
    │   └── the8472
    │       └── mldht
    │           ├── bin
    │           │   ├── mldht-daemon
    │           │   └── mldht-remote-cli
    │           ├── docs
    │           │   ├── keyspace-traversal.md
    │           │   ├── relicense.mbox
    │           │   ├── sanitizing-algorithms.rst
    │           │   └── use-as-library.md
    │           ├── feeds
    │           ├── gpl-2.0.txt
    │           ├── LICENSE
    │           ├── pom.xml
    │           ├── README.md
    │           ├── src
    │           │   ├── lbms
    │           │   │   └── plugins
    │           │   │       └── mldht
    │           │   │           ├── DHTConfiguration.java
    │           │   │           ├── indexer
    │           │   │           │   └── utils
    │           │   │           │       ├── GenericBloomFilter.java
    │           │   │           │       └── RotatingBloomFilter.java
    │           │   │           ├── kad
    │           │   │           │   ├── AnnounceNodeCache.java
    │           │   │           │   ├── BloomFilterBEP33.java
    │           │   │           │   ├── Database.java
    │           │   │           │   ├── DatabaseStats.java
    │           │   │           │   ├── DBItem.java
    │           │   │           │   ├── DHTBase.java
    │           │   │           │   ├── DHTConstants.java
    │           │   │           │   ├── DHTException.java
    │           │   │           │   ├── DHTIndexingListener.java
    │           │   │           │   ├── DHT.java
    │           │   │           │   ├── DHTLogger.java
    │           │   │           │   ├── DHTStats.java
    │           │   │           │   ├── DHTStatsListener.java
    │           │   │           │   ├── DHTStatus.java
    │           │   │           │   ├── DHTStatusListener.java
    │           │   │           │   ├── GenericStorage.java
    │           │   │           │   ├── IDMismatchDetector.java
    │           │   │           │   ├── KBucketEntry.java
    │           │   │           │   ├── KBucket.java
    │           │   │           │   ├── KClosestNodesSearch.java
    │           │   │           │   ├── Key.java
    │           │   │           │   ├── messages
    │           │   │           │   │   ├── AbstractLookupRequest.java
    │           │   │           │   │   ├── AbstractLookupResponse.java
    │           │   │           │   │   ├── AnnounceRequest.java
    │           │   │           │   │   ├── AnnounceResponse.java
    │           │   │           │   │   ├── ErrorMessage.java
    │           │   │           │   │   ├── FindNodeRequest.java
    │           │   │           │   │   ├── FindNodeResponse.java
    │           │   │           │   │   ├── GetPeersRequest.java
    │           │   │           │   │   ├── GetPeersResponse.java
    │           │   │           │   │   ├── GetRequest.java
    │           │   │           │   │   ├── GetResponse.java
    │           │   │           │   │   ├── MessageBase.java
    │           │   │           │   │   ├── MessageDecoder.java
    │           │   │           │   │   ├── MessageException.java
    │           │   │           │   │   ├── PingRequest.java
    │           │   │           │   │   ├── PingResponse.java
    │           │   │           │   │   ├── PutRequest.java
    │           │   │           │   │   ├── PutResponse.java
    │           │   │           │   │   ├── SampleRequest.java
    │           │   │           │   │   ├── SampleResponse.java
    │           │   │           │   │   ├── UnknownTypeRequest.java
    │           │   │           │   │   └── UnknownTypeResponse.java
    │           │   │           │   ├── Node.java
    │           │   │           │   ├── NodeList.java
    │           │   │           │   ├── NonReachableCache.java
    │           │   │           │   ├── PeerAddressDBItem.java
    │           │   │           │   ├── Prefix.java
    │           │   │           │   ├── RPCCall.java
    │           │   │           │   ├── RPCCallListener.java
    │           │   │           │   ├── RPCServer.java
    │           │   │           │   ├── RPCServerManager.java
    │           │   │           │   ├── RPCState.java
    │           │   │           │   ├── RPCStats.java
    │           │   │           │   ├── ScrapeResponseHandler.java
    │           │   │           │   ├── SpamThrottle.java
    │           │   │           │   ├── TaskBuilder.java
    │           │   │           │   ├── tasks
    │           │   │           │   │   ├── AnnounceTask.java
    │           │   │           │   │   ├── ClosestSet.java
    │           │   │           │   │   ├── CountedStat.java
    │           │   │           │   │   ├── GetLookupTask.java
    │           │   │           │   │   ├── IteratingTask.java
    │           │   │           │   │   ├── IterativeLookupCandidates.java
    │           │   │           │   │   ├── KeyspaceCrawler.java
    │           │   │           │   │   ├── KeyspaceSampler.java
    │           │   │           │   │   ├── NodeLookup.java
    │           │   │           │   │   ├── PeerLookupTask.java
    │           │   │           │   │   ├── PingRefreshTask.java
    │           │   │           │   │   ├── PutTask.java
    │           │   │           │   │   ├── RequestCandidateEvaluator.java
    │           │   │           │   │   ├── TargetedTask.java
    │           │   │           │   │   ├── Task.java
    │           │   │           │   │   ├── TaskListener.java
    │           │   │           │   │   ├── TaskManager.java
    │           │   │           │   │   └── TaskStats.java
    │           │   │           │   └── utils
    │           │   │           │       ├── AddressUtils.java
    │           │   │           │       ├── BitVector.java
    │           │   │           │       ├── ByteWrapper.java
    │           │   │           │       ├── PackUtil.java
    │           │   │           │       ├── PopulationEstimator.java
    │           │   │           │       ├── PopulationListener.java
    │           │   │           │       ├── ResponseTimeoutFilter.java
    │           │   │           │       └── ThreadLocalUtils.java
    │           │   │           └── utils
    │           │   │               ├── Blackhole.java
    │           │   │               ├── ExponentialWeightendMovingAverage.java
    │           │   │               ├── NIOConnectionManager.java
    │           │   │               ├── Radixable.java
    │           │   │               ├── RadixSort.java
    │           │   │               └── Selectable.java
    │           │   └── the8472
    │           │       ├── bencode
    │           │       │   ├── BDecoder.java
    │           │       │   ├── BEncoder.java
    │           │       │   ├── PathMatcher.java
    │           │       │   ├── PrettyPrinter.java
    │           │       │   ├── Tokenizer.java
    │           │       │   └── Utils.java
    │           │       ├── bt
    │           │       │   ├── MetadataPool.java
    │           │       │   ├── PullMetaDataConnection.java
    │           │       │   ├── TorrentUtils.java
    │           │       │   └── UselessPeerFilter.java
    │           │       ├── mldht
    │           │       │   ├── cli
    │           │       │   │   ├── Client.java
    │           │       │   │   ├── CommandProcessor.java
    │           │       │   │   ├── commands
    │           │       │   │   │   ├── Burst.java
    │           │       │   │   │   ├── Get.java
    │           │       │   │   │   ├── GetPeers.java
    │           │       │   │   │   ├── GetTorrent.java
    │           │       │   │   │   ├── Help.java
    │           │       │   │   │   ├── Ping.java
    │           │       │   │   │   ├── Put.java
    │           │       │   │   │   └── Sampling.java
    │           │       │   │   ├── ParseArgs.java
    │           │       │   │   ├── Server.java
    │           │       │   │   └── TorrentInfo.java
    │           │       │   ├── Component.java
    │           │       │   ├── config-defaults.xml
    │           │       │   ├── config.xsd
    │           │       │   ├── Diagnostics.java
    │           │       │   ├── Firehose.java
    │           │       │   ├── indexing
    │           │       │   │   ├── ActiveLookupProvider.java
    │           │       │   │   ├── OpentrackerLiveSync.java
    │           │       │   │   └── TorrentDumper.java
    │           │       │   ├── Launcher.java
    │           │       │   ├── PassiveRedisIndexer.java
    │           │       │   └── TorrentFetcher.java
    │           │       └── utils
    │           │           ├── AnonAllocator.java
    │           │           ├── Arrays.java
    │           │           ├── concurrent
    │           │           │   ├── LoggingScheduledThreadPoolExecutor.java
    │           │           │   ├── NonblockingScheduledExecutor.java
    │           │           │   └── SerializedTaskExecutor.java
    │           │           ├── ConfigReader.java
    │           │           ├── CowSet.java
    │           │           ├── FilesystemNotifications.java
    │           │           ├── Functional.java
    │           │           ├── io
    │           │           │   ├── ConnectionAcceptor.java
    │           │           │   ├── FileIO.java
    │           │           │   └── NetMask.java
    │           │           ├── MathUtils.java
    │           │           ├── Pair.java
    │           │           ├── ShufflingBag.java
    │           │           ├── SortedCoWSet.java
    │           │           └── XMLUtils.java
    │           └── test
    │               ├── lbms
    │               │   └── plugins
    │               │       └── mldht
    │               │           ├── indexer
    │               │           │   └── utils
    │               │           │       └── RotatingBloomFilterTest.java
    │               │           └── kad
    │               │               ├── DHTLifeCycleTest.java
    │               │               ├── KClosestNodeSearchTest.java
    │               │               ├── NodeFactory.java
    │               │               ├── NodeTest.java
    │               │               ├── OnInsertValidations.java
    │               │               ├── RoutingTableTest.java
    │               │               └── utils
    │               │                   ├── AddressUtilsTest.java
    │               │                   └── TimeoutFilterStatsTest.java
    │               └── the8472
    │                   ├── test
    │                   │   ├── bencode
    │                   │   │   ├── DecoderTest.java
    │                   │   │   ├── EncoderTest.java
    │                   │   │   ├── KeyTest.java
    │                   │   │   ├── PathMatcherTest.java
    │                   │   │   ├── PrefixTest.java
    │                   │   │   └── TokenizerTest.java
    │                   │   ├── Bep33.java
    │                   │   ├── Bep42.java
    │                   │   └── Bep44.java
    │                   └── utils
    │                       ├── ArraysTest.java
    │                       ├── io
    │                       │   └── NetMaskTest.java
    │                       └── NeverRunsExecutor.java
    ├── bt-http-tracker-client
    │   ├── pom.xml
    │   └── src
    │       ├── main
    │       │   ├── java
    │       │   │   └── bt
    │       │   │       └── tracker
    │       │   │           └── http
    │       │   │               ├── CommonsHttpResponseHandler.java
    │       │   │               ├── HttpResponseHandler.java
    │       │   │               ├── HttpTrackerFactory.java
    │       │   │               ├── HttpTracker.java
    │       │   │               ├── HttpTrackerModule.java
    │       │   │               ├── HttpTrackerModuleProvider.java
    │       │   │               └── urlencoding
    │       │   │                   ├── BinaryQueryNamedValue.java
    │       │   │                   ├── QueryBuilderUtil.java
    │       │   │                   └── TrackerQueryBuilder.java
    │       │   └── resources
    │       │       └── META-INF
    │       │           └── services
    │       │               └── bt.module.BtModuleProvider
    │       └── test
    │           ├── java
    │           │   └── bt
    │           │       └── tracker
    │           │           └── http
    │           │               └── HttpResponseHandlerTest.java
    │           └── resources
    │               └── bt
    │                   └── tracker
    │                       └── http
    │                           ├── tracker_response_failure1
    │                           └── tracker_response_success1
    ├── bt-tests
    │   ├── pom.xml
    │   └── src
    │       ├── main
    │       │   ├── java
    │       │   │   └── bt
    │       │   │       ├── it
    │       │   │       │   └── fixture
    │       │   │       │       ├── BaseBtTest.java
    │       │   │       │       ├── BtRuntimeFactory.java
    │       │   │       │       ├── DefaultSwarmPeerFactory.java
    │       │   │       │       ├── LeecherPeer.java
    │       │   │       │       ├── SeederPeer.java
    │       │   │       │       ├── SharedTrackerModule.java
    │       │   │       │       ├── SwarmBuilder.java
    │       │   │       │       ├── Swarm.java
    │       │   │       │       ├── SwarmPeerFactory.java
    │       │   │       │       ├── SwarmPeer.java
    │       │   │       │       ├── TestExecutorModule.java
    │       │   │       │       ├── TestExecutorServiceProvider.java
    │       │   │       │       └── TorrentFiles.java
    │       │   │       └── test
    │       │   │           ├── protocol
    │       │   │           │   ├── BitfieldMatcher.java
    │       │   │           │   ├── CancelMatcher.java
    │       │   │           │   ├── EqualityMatcher.java
    │       │   │           │   ├── HandshakeMatcher.java
    │       │   │           │   ├── HaveMatcher.java
    │       │   │           │   ├── PieceMatcher.java
    │       │   │           │   ├── ProtocolBuilder.java
    │       │   │           │   ├── ProtocolTestBuilder.java
    │       │   │           │   ├── ProtocolTest.java
    │       │   │           │   └── RequestMatcher.java
    │       │   │           └── torrent
    │       │   │               └── selector
    │       │   │                   └── UpdatablePieceStatistics.java
    │       │   └── resources
    │       │       └── bt
    │       │           └── it
    │       │               └── fixture
    │       │                   ├── file.txt
    │       │                   ├── file.txt.torrent
    │       │                   └── no-files.torrent
    │       └── test
    │           ├── java
    │           │   └── bt
    │           │       ├── data
    │           │       │   ├── BitfieldTest.java
    │           │       │   ├── ChunkDescriptor_FileStorageUnitTest.java
    │           │       │   ├── ChunkDescriptorTest.java
    │           │       │   ├── ChunkDescriptorTestUtil.java
    │           │       │   ├── DataDescriptor_DataReaderTest.java
    │           │       │   ├── digest
    │           │       │   │   └── JavaSecurityDigesterTest.java
    │           │       │   ├── file
    │           │       │   │   ├── MockFileSystem.java
    │           │       │   │   └── PathNormalizerTest.java
    │           │       │   ├── MockStorageUnit.java
    │           │       │   ├── range
    │           │       │   │   ├── ByteRange_ExceptionsTest.java
    │           │       │   │   └── ByteRangeTest.java
    │           │       │   ├── ReadWriteDataRange_ExceptionsTest.java
    │           │       │   ├── ReadWriteDataRange_SubrangeExceptionsTest.java
    │           │       │   ├── ReadWriteDataRange_SubrangeTest.java
    │           │       │   ├── ReadWriteDataRangeTest.java
    │           │       │   ├── TestFileSystemStorage.java
    │           │       │   └── UnitAccess.java
    │           │       ├── it
    │           │       │   ├── pex
    │           │       │   │   └── PeerExchange_IT.java
    │           │       │   ├── Swarm_EncryptedIT.java
    │           │       │   ├── Swarm_IT.java
    │           │       │   ├── Swarm_LocalServiceDiscoveryIT.java
    │           │       │   └── Swarm_MagnetIT.java
    │           │       ├── magnet
    │           │       │   └── MagnetUriParserTest.java
    │           │       ├── metainfo
    │           │       │   └── MetadataServiceTest.java
    │           │       ├── net
    │           │       │   ├── BigIntegersTest.java
    │           │       │   ├── buffer
    │           │       │   │   ├── BuffersTest.java
    │           │       │   │   └── SplicedByteBufferViewTest.java
    │           │       │   ├── ByteChannelReader_TimedReadTest.java
    │           │       │   ├── ByteChannelReader_TimedSyncTest.java
    │           │       │   ├── LimitingChannel.java
    │           │       │   ├── pipeline
    │           │       │   │   ├── InboundMessageProcessor_BufferRotationTest.java
    │           │       │   │   └── InboundMessageProcessorTest.java
    │           │       │   ├── ReadByBlockChannel.java
    │           │       │   └── ReadByBlockChannelTest.java
    │           │       ├── peer
    │           │       │   └── lan
    │           │       │       ├── AnnounceMessageTest.java
    │           │       │       └── CookieTest.java
    │           │       ├── protocol
    │           │       │   ├── Protocol_CorrectDataTest.java
    │           │       │   ├── Protocol_InsufficientDataTest.java
    │           │       │   ├── Protocol_InvalidDataTest.java
    │           │       │   ├── Protocol_InvalidDeclaredLengthTest.java
    │           │       │   └── ProtocolsTest.java
    │           │       ├── runtime
    │           │       │   ├── BtRuntimeBuilderTest.java
    │           │       │   ├── OverridenApplicationService.java
    │           │       │   └── TestModuleProvider.java
    │           │       ├── service
    │           │       │   └── ClasspathApplicationServiceTest.java
    │           │       ├── TestUtil.java
    │           │       ├── torrent
    │           │       │   ├── BaseBitfieldTest.java
    │           │       │   ├── compiler
    │           │       │   │   └── MessagingAgentCompilerTest.java
    │           │       │   ├── maker
    │           │       │   │   └── TorrentMakerTest.java
    │           │       │   ├── messaging
    │           │       │   │   └── RoutingPeerWorker_WithCompilerTest.java
    │           │       │   └── selector
    │           │       │       ├── RarestFirstSelectorTest.java
    │           │       │       └── SequentialSelectorTest.java
    │           │       └── tracker
    │           │           ├── MultiTrackerTest.java
    │           │           └── udp
    │           │               ├── SingleClientUdpTracker.java
    │           │               ├── UdpMessageWorkerTest.java
    │           │               ├── UdpTrackerConnection.java
    │           │               └── UdpTrackerTestExecutor.java
    │           └── resources
    │               ├── bt
    │               │   └── metainfo
    │               │       ├── multi_file.torrent
    │               │       ├── single_file_info_dictionary.bin
    │               │       └── single_file.torrent
    │               └── META-INF
    │                   └── services
    │                       └── bt.module.BtModuleProvider
    ├── bt-upnp
    │   ├── pom.xml
    │   ├── README.md
    │   └── src
    │       └── main
    │           ├── java
    │           │   └── bt
    │           │       └── portmapping
    │           │           └── upnp
    │           │               ├── jetty
    │           │               │   └── JettyAsyncUpnpServiceConfiguration.java
    │           │               ├── UpnpPortMapper.java
    │           │               ├── UpnpPortMapperModule.java
    │           │               ├── UpnpPortMapperModuleProvider.java
    │           │               └── UpnpPortMappingServicesRegistrar.java
    │           └── resources
    │               └── META-INF
    │                   └── services
    │                       └── bt.module.BtModuleProvider
    ├── codecov.yml
    ├── doc
    │   └── javadoc
    │       └── overview.html
    ├── examples
    │   ├── pom.xml
    │   └── src
    │       └── main
    │           ├── java
    │           │   ├── datasharing
    │           │   │   ├── Leecher.java
    │           │   │   └── Seeder.java
    │           │   ├── peertracker
    │           │   │   ├── MagnetLinkFileReader.java
    │           │   │   ├── Main.java
    │           │   │   ├── PeerStats.java
    │           │   │   ├── README.md
    │           │   │   └── StatsDumper.java
    │           │   └── yourip
    │           │       ├── Main.java
    │           │       ├── mock
    │           │       │   ├── MockModule.java
    │           │       │   ├── MockStorage.java
    │           │       │   ├── MockStorageUnit.java
    │           │       │   ├── MockTorrent.java
    │           │       │   ├── MockTrackerFactory.java
    │           │       │   ├── MockTracker.java
    │           │       │   └── MockTrackerResponse.java
    │           │       ├── README.md
    │           │       ├── YourIP.java
    │           │       ├── YourIPMessageHandler.java
    │           │       ├── YourIPMessenger.java
    │           │       └── YourIPModule.java
    │           └── resources
    │               └── log4j2.xml
    ├── findbugs.xml
    ├── jacoco-report
    │   └── pom.xml
    ├── LICENSE
    ├── pom.xml
    ├── README.md
    ├── RELEASE-NOTES.md
    ├── script
    │   ├── appveyor-install-jce.ps1
    │   ├── deploy-release.sh
    │   ├── git-merge-mldht.sh
    │   ├── perform-release.sh
    │   ├── prepare-release.sh
    │   ├── travis-publish-codecov.sh
    │   ├── travis-publish-javadoc.sh
    │   ├── travis-publish-site.sh
    │   ├── travis-publish-sonar.sh
    │   └── travis-run-tests.sh
    └── UPGRADE.md

221 directories, 755 files

标签:

实例下载地址

Bt:Java 8全功能BitTorrent实现

不能下载?内容有错? 点击这里报错 + 投诉 + 提问

好例子网口号:伸出你的我的手 — 分享

网友评论

发表评论

(您的评论需要经过审核才能显示)

查看所有0条评论>>

小贴士

感谢您为本站写下的评论,您的评论对其它用户来说具有重要的参考价值,所以请认真填写。

  • 类似“顶”、“沙发”之类没有营养的文字,对勤劳贡献的楼主来说是令人沮丧的反馈信息。
  • 相信您也不想看到一排文字/表情墙,所以请不要反馈意义不大的重复字符,也请尽量不要纯表情的回复。
  • 提问之前请再仔细看一遍楼主的说明,或许是您遗漏了。
  • 请勿到处挖坑绊人、招贴广告。既占空间让人厌烦,又没人会搭理,于人于己都无利。

关于好例子网

本站旨在为广大IT学习爱好者提供一个非营利性互相学习交流分享平台。本站所有资源都可以被免费获取学习研究。本站资源来自网友分享,对搜索内容的合法性不具有预见性、识别性、控制性,仅供学习研究,请务必在下载后24小时内给予删除,不得用于其他任何用途,否则后果自负。基于互联网的特殊性,平台无法对用户传输的作品、信息、内容的权属或合法性、安全性、合规性、真实性、科学性、完整权、有效性等进行实质审查;无论平台是否已进行审查,用户均应自行承担因其传输的作品、信息、内容而可能或已经产生的侵权或权属纠纷等法律责任。本站所有资源不代表本站的观点或立场,基于网友分享,根据中国法律《信息网络传播权保护条例》第二十二与二十三条之规定,若资源存在侵权或相关问题请联系本站客服人员,点此联系我们。关于更多版权及免责申明参见 版权及免责申明

;
报警