实例介绍
bittorrent协议的java实现,想学习或者做bt项目的同学可以参考。包含bencode,DHT,bittorrent 的完整实现。最低要求jdk6
【实例截图】
【核心代码】
db3d60bd-e589-4a33-a7ac-a7d435daa499
└── ttorrent-master
├── assembly.xml
├── bencoding
│ ├── pom.xml
│ └── src
│ ├── main
│ │ └── java
│ │ └── com
│ │ └── turn
│ │ └── ttorrent
│ │ └── bcodec
│ │ ├── BDecoder.java
│ │ ├── BEncoder.java
│ │ ├── BEValue.java
│ │ └── InvalidBEncodingException.java
│ └── test
│ └── java
│ └── BDecoderTest.java
├── bin
│ ├── ttorent-torrent
│ ├── ttorrent
│ └── ttorrent-tracker
├── cli
│ ├── pom.xml
│ └── src
│ └── main
│ └── java
│ └── com
│ └── turn
│ └── ttorrent
│ └── cli
│ ├── ClientMain.java
│ ├── TorrentMain.java
│ └── TrackerMain.java
├── common
│ ├── pom.xml
│ └── src
│ ├── main
│ │ └── java
│ │ └── com
│ │ └── turn
│ │ └── ttorrent
│ │ ├── common
│ │ │ ├── AnnounceableInformation.java
│ │ │ ├── creation
│ │ │ │ ├── CommonHashingCalculator.java
│ │ │ │ ├── DataSourceHolder.java
│ │ │ │ ├── HashingResult.java
│ │ │ │ ├── MetadataBuilder.java
│ │ │ │ ├── MultiThreadHashesCalculator.java
│ │ │ │ ├── PiecesHashesCalculator.java
│ │ │ │ ├── SingleThreadHashesCalculator.java
│ │ │ │ ├── Source.java
│ │ │ │ └── StringUtils.java
│ │ │ ├── ImmutableTorrentHash.java
│ │ │ ├── LoggerUtils.java
│ │ │ ├── Optional.java
│ │ │ ├── Pair.java
│ │ │ ├── Peer.java
│ │ │ ├── PeerUID.java
│ │ │ ├── protocol
│ │ │ │ ├── AnnounceRequestMessage.java
│ │ │ │ ├── AnnounceResponseMessage.java
│ │ │ │ ├── http
│ │ │ │ │ ├── HTTPAnnounceRequestMessage.java
│ │ │ │ │ ├── HTTPAnnounceResponseMessage.java
│ │ │ │ │ ├── HTTPTrackerErrorMessage.java
│ │ │ │ │ └── HTTPTrackerMessage.java
│ │ │ │ ├── PeerMessage.java
│ │ │ │ ├── TrackerMessage.java
│ │ │ │ └── udp
│ │ │ │ ├── UDPAnnounceRequestMessage.java
│ │ │ │ ├── UDPAnnounceResponseMessage.java
│ │ │ │ ├── UDPConnectRequestMessage.java
│ │ │ │ ├── UDPConnectResponseMessage.java
│ │ │ │ ├── UDPTrackerErrorMessage.java
│ │ │ │ └── UDPTrackerMessage.java
│ │ │ ├── SystemTimeService.java
│ │ │ ├── TimeService.java
│ │ │ ├── TorrentCreator.java
│ │ │ ├── TorrentFile.java
│ │ │ ├── TorrentHash.java
│ │ │ ├── TorrentInfo.java
│ │ │ ├── TorrentLoggerFactory.java
│ │ │ ├── TorrentMetadataImpl.java
│ │ │ ├── TorrentMetadata.java
│ │ │ ├── TorrentMetadataKeys.java
│ │ │ ├── TorrentParser.java
│ │ │ ├── TorrentSerializer.java
│ │ │ ├── TorrentStatistic.java
│ │ │ └── TorrentUtils.java
│ │ └── Constants.java
│ └── test
│ └── java
│ └── com
│ └── turn
│ └── ttorrent
│ └── common
│ ├── creation
│ │ ├── HashesCalculatorsTest.java
│ │ └── MetadataBuilderTest.java
│ ├── protocol
│ │ ├── http
│ │ │ └── HTTPAnnounceResponseMessageTest.java
│ │ └── udp
│ │ └── UDPAnnounceResponseMessageTest.java
│ ├── TorrentParserTest.java
│ └── TorrentUtilsTest.java
├── COPYING
├── INSTALL
├── network
│ ├── pom.xml
│ └── src
│ ├── main
│ │ └── java
│ │ └── com
│ │ └── turn
│ │ └── ttorrent
│ │ └── network
│ │ ├── AcceptAttachmentImpl.java
│ │ ├── AcceptAttachment.java
│ │ ├── ChannelListenerFactory.java
│ │ ├── ConnectionClosedException.java
│ │ ├── ConnectionListener.java
│ │ ├── ConnectionManagerContext.java
│ │ ├── ConnectionManager.java
│ │ ├── ConnectionWorker.java
│ │ ├── ConnectTask.java
│ │ ├── FirstAvailableChannel.java
│ │ ├── keyProcessors
│ │ │ ├── AcceptableKeyProcessor.java
│ │ │ ├── CleanupKeyProcessor.java
│ │ │ ├── CleanupProcessor.java
│ │ │ ├── ConnectableKeyProcessor.java
│ │ │ ├── InvalidKeyProcessor.java
│ │ │ ├── KeyProcessor.java
│ │ │ ├── KeyProcessorUtil.java
│ │ │ ├── ReadableKeyProcessor.java
│ │ │ └── WritableKeyProcessor.java
│ │ ├── NewConnectionAllower.java
│ │ ├── ReadAttachment.java
│ │ ├── ReadWriteAttachment.java
│ │ ├── SelectorFactory.java
│ │ ├── ServerChannelRegister.java
│ │ ├── TimeoutAttachment.java
│ │ ├── TimeoutStorageImpl.java
│ │ ├── TimeoutStorage.java
│ │ ├── WriteAttachment.java
│ │ ├── WriteListener.java
│ │ └── WriteTask.java
│ └── test
│ └── java
│ └── com
│ └── turn
│ └── ttorrent
│ └── network
│ ├── ConnectionManagerTest.java
│ ├── ConnectionWorkerTest.java
│ ├── keyProcessors
│ │ ├── CleanupKeyProcessorTest.java
│ │ └── WritableKeyProcessorTest.java
│ ├── StateChannelListenerTest.java
│ └── WorkingReceiverTest.java
├── pom.xml
├── README.md
├── test-api
│ ├── pom.xml
│ └── src
│ └── main
│ └── java
│ └── com
│ └── turn
│ └── ttorrent
│ ├── MockTimeService.java
│ ├── TempFiles.java
│ ├── Utils.java
│ └── WaitFor.java
├── tests
│ ├── pom.xml
│ └── src
│ └── test
│ ├── java
│ │ └── com
│ │ └── turn
│ │ └── ttorrent
│ │ ├── client
│ │ │ ├── announce
│ │ │ │ └── TrackerClientTest.java
│ │ │ └── CommunicationManagerTest.java
│ │ ├── common
│ │ │ └── TorrentTest.java
│ │ ├── CommunicationManagerFactory.java
│ │ ├── DummyPeerActivityListener.java
│ │ └── tracker
│ │ ├── TrackerAnnounceTest.java
│ │ ├── TrackerTest.java
│ │ └── TrackerUtils.java
│ └── resources
│ ├── parentFiles
│ │ ├── file1.jar
│ │ ├── file2.jar
│ │ └── parentDir
│ │ ├── AccuRevCommon.jar
│ │ ├── commons-io-cio2.5_3.jar
│ │ ├── commons-io-cio2.5_3.jar.link
│ │ ├── inDir
│ │ │ └── application.wadl
│ │ └── storage.version
│ └── torrents
│ ├── file1.jar.torrent
│ ├── file2.jar.torrent
│ ├── parentDir.linux.torrent
│ └── parentDir.win.torrent
├── ttorrent-client
│ ├── pom.xml
│ └── src
│ ├── main
│ │ └── java
│ │ └── com
│ │ └── turn
│ │ └── ttorrent
│ │ └── client
│ │ ├── announce
│ │ │ ├── AnnounceException.java
│ │ │ ├── Announce.java
│ │ │ ├── AnnounceResponseListener.java
│ │ │ ├── HTTPTrackerClient.java
│ │ │ ├── TrackerClientFactoryImpl.java
│ │ │ ├── TrackerClientFactory.java
│ │ │ ├── TrackerClient.java
│ │ │ └── UDPTrackerClient.java
│ │ ├── AnnounceableInformationImpl.java
│ │ ├── ClientState.java
│ │ ├── CommunicationManager.java
│ │ ├── Context.java
│ │ ├── EventDispatcher.java
│ │ ├── FileMetadataProvider.java
│ │ ├── Handshake.java
│ │ ├── LoadedTorrentImpl.java
│ │ ├── LoadedTorrent.java
│ │ ├── network
│ │ │ ├── CountLimitConnectionAllower.java
│ │ │ ├── DataProcessor.java
│ │ │ ├── DataProcessorUtil.java
│ │ │ ├── HandshakeReceiver.java
│ │ │ ├── HandshakeSender.java
│ │ │ ├── OutgoingConnectionListener.java
│ │ │ ├── ShutdownAndRemovePeerProcessor.java
│ │ │ ├── ShutdownProcessor.java
│ │ │ ├── StateChannelListener.java
│ │ │ └── WorkingReceiver.java
│ │ ├── peer
│ │ │ ├── MessageListener.java
│ │ │ ├── PeerActivityListener.java
│ │ │ ├── Rate.java
│ │ │ ├── SharingPeerInfo.java
│ │ │ └── SharingPeer.java
│ │ ├── PeerInformation.java
│ │ ├── PeersStorage.java
│ │ ├── PieceInformation.java
│ │ ├── Piece.java
│ │ ├── SelectorFactoryImpl.java
│ │ ├── SharedTorrent.java
│ │ ├── SharingPeerFactory.java
│ │ ├── SimpleClient.java
│ │ ├── storage
│ │ │ ├── EmptyPieceStorageFactory.java
│ │ │ ├── FairPieceStorageFactory.java
│ │ │ ├── FileCollectionStorage.java
│ │ │ ├── FileStorage.java
│ │ │ ├── FullyPieceStorageFactory.java
│ │ │ ├── PieceStorageFactory.java
│ │ │ ├── PieceStorageImpl.java
│ │ │ ├── PieceStorage.java
│ │ │ └── TorrentByteStorage.java
│ │ ├── strategy
│ │ │ ├── EndGameStrategyImpl.java
│ │ │ ├── EndGameStrategy.java
│ │ │ ├── RequestsCollectionImpl.java
│ │ │ ├── RequestsCollection.java
│ │ │ ├── RequestStrategyImplAnyInteresting.java
│ │ │ ├── RequestStrategyImplSequential.java
│ │ │ └── RequestStrategy.java
│ │ ├── TorrentConnectionListener.java
│ │ ├── TorrentListener.java
│ │ ├── TorrentListenerWrapper.java
│ │ ├── TorrentLoaderImpl.java
│ │ ├── TorrentLoader.java
│ │ ├── TorrentManagerImpl.java
│ │ ├── TorrentManager.java
│ │ ├── TorrentMetadataProvider.java
│ │ └── TorrentsStorage.java
│ └── test
│ └── java
│ └── com
│ └── turn
│ └── ttorrent
│ └── client
│ ├── ByteArrayStorage.java
│ ├── EventDispatcherTest.java
│ ├── network
│ │ └── HandshakeReceiverTest.java
│ ├── PeersStorageTest.java
│ ├── storage
│ │ ├── FairPieceStorageFactoryTest.java
│ │ ├── FileCollectionStorageTest.java
│ │ └── PieceStorageImplTest.java
│ └── strategy
│ └── RequestStrategyImplAnyInterestingTest.java
└── ttorrent-tracker
├── pom.xml
└── src
├── main
│ └── java
│ └── com
│ └── turn
│ └── ttorrent
│ └── tracker
│ ├── AddressChecker.java
│ ├── MultiAnnounceRequestProcessor.java
│ ├── PeerCollectorThread.java
│ ├── TorrentsRepository.java
│ ├── TrackedPeer.java
│ ├── TrackedTorrent.java
│ ├── Tracker.java
│ ├── TrackerRequestProcessor.java
│ └── TrackerServiceContainer.java
└── test
└── java
└── com
└── turn
└── ttorrent
└── tracker
├── MultiAnnounceRequestProcessorTest.java
└── TorrentsRepositoryTest.java
117 directories, 218 files
标签:
小贴士
感谢您为本站写下的评论,您的评论对其它用户来说具有重要的参考价值,所以请认真填写。
- 类似“顶”、“沙发”之类没有营养的文字,对勤劳贡献的楼主来说是令人沮丧的反馈信息。
- 相信您也不想看到一排文字/表情墙,所以请不要反馈意义不大的重复字符,也请尽量不要纯表情的回复。
- 提问之前请再仔细看一遍楼主的说明,或许是您遗漏了。
- 请勿到处挖坑绊人、招贴广告。既占空间让人厌烦,又没人会搭理,于人于己都无利。
关于好例子网
本站旨在为广大IT学习爱好者提供一个非营利性互相学习交流分享平台。本站所有资源都可以被免费获取学习研究。本站资源来自网友分享,对搜索内容的合法性不具有预见性、识别性、控制性,仅供学习研究,请务必在下载后24小时内给予删除,不得用于其他任何用途,否则后果自负。基于互联网的特殊性,平台无法对用户传输的作品、信息、内容的权属或合法性、安全性、合规性、真实性、科学性、完整权、有效性等进行实质审查;无论平台是否已进行审查,用户均应自行承担因其传输的作品、信息、内容而可能或已经产生的侵权或权属纠纷等法律责任。本站所有资源不代表本站的观点或立场,基于网友分享,根据中国法律《信息网络传播权保护条例》第二十二与二十三条之规定,若资源存在侵权或相关问题请联系本站客服人员,点此联系我们。关于更多版权及免责申明参见 版权及免责申明
网友评论
我要评论