-
大小: 1.09MB文件類型: .zip金幣: 2下載: 0 次發(fā)布日期: 2023-10-01
- 語(yǔ)言: Java
- 標(biāo)簽: bittorrent??bt??p2p??對(duì)等網(wǎng)絡(luò)??bt協(xié)議??
資源簡(jiǎn)介
開(kāi)源bittorrent協(xié)議實(shí)現(xiàn),想學(xué)習(xí)或者做bt項(xiàng)目的同學(xué)可以參考。包含bencode,DHT,bittorrent 的完整實(shí)現(xiàn)

代碼片段和文件信息
/*
?*?Copyright?(c)?2016—2017?Andrei?Tomashpolskiy?and?individual?contributors.
?*
?*?Licensed?under?the?Apache?License?Version?2.0?(the?“License“);
?*?you?may?not?use?this?file?except?in?compliance?with?the?License.
?*?You?may?obtain?a?copy?of?the?License?at
?*
?*?????http://www.apache.org/licenses/LICENSE-2.0
?*
?*?Unless?required?by?applicable?law?or?agreed?to?in?writing?software
?*?distributed?under?the?License?is?distributed?on?an?“AS?IS“?BASIS
?*?WITHOUT?WARRANTIES?OR?CONDITIONS?OF?ANY?KIND?either?express?or?implied.
?*?See?the?License?for?the?specific?language?governing?permissions?and
?*?limitations?under?the?License.
?*/
package?bt.bencoding;
import?bt.bencoding.model.BEInteger;
import?bt.bencoding.model.BEList;
import?bt.bencoding.model.BEMap;
import?bt.bencoding.model.BEobject;
import?bt.bencoding.model.BEString;
import?java.io.IOException;
import?java.io.OutputStream;
import?java.math.BigInteger;
import?java.nio.charset.Charset;
import?java.util.List;
import?java.util.Map;
import?java.util.objects;
import?java.util.TreeMap;
import?java.util.function.BinaryOperator;
import?java.util.stream.Collectors;
/**
?*?BEncoding?encoder.
?*
?*?@since?1.0
?*/
public?class?BEEncoder?{
????private?static?final?Charset?defaultCharset?=?Charset.forName(“UTF-8“);
????private?static?final?BEEncoder?instance?=?new?BEEncoder();
????/**
?????*?Get?default?encoder.
?????*
?????*?@since?1.0
?????*/
????public?static?BEEncoder?encoder()?{
????????return?instance;
????}
????/**
?????*?Write?bencoded?string?to?a?binary?output.
?????*
?????*?@since?1.0
?????*/
????public?void?encode(BEString?string?OutputStream?out)?throws?IOException?{
????????objects.requireNonNull(string);
????????byte[]?bytes?=?string.getValue();
????????encodeString(bytes?out);
????}
????private?void?encodeString(byte[]?bytes?OutputStream?out)?throws?IOException?{
????????write(out?Integer.toString(bytes.length).getBytes(defaultCharset));
????????write(out?‘:‘);
????????write(out?bytes);
????}
????/**
?????*?Write?bencoded?integer?to?a?binary?output.
?????*
?????*?@since?1.0
?????*/
????public?void?encode(BEInteger?integer?OutputStream?out)?throws?IOException?{
????????objects.requireNonNull(integer);
????????BigInteger?value?=?integer.getValue();
????????write(out?BEParser.INTEGER_PREFIX);
????????write(out?Integer.toString(value.intValueExact()).getBytes(defaultCharset));
????????write(out?BEParser.EOF);
????}
????/**
?????*?Write?bencoded?list?to?a?binary?output.
?????*
?????*?@since?1.0
?????*/
????public?void?encode(BEList?list?OutputStream?out)?throws?IOException?{
????????objects.requireNonNull(list);
????????List?extends?BEobject>>?values?=?list.getValue();
????????write(out?BEParser.LIST_PREFIX);
????????for?(BEobject>?value?:?values)?{
????????????value.writeTo(out);
????????}
????????write(out?BEParser.EOF);
????}
????/**
?????*?Write?bencoded?dictionary?to?a?binary?output.
?????*
?????*?@since?1.0
?????*/
????public?void?encode(BEMap?map
?屬性????????????大小?????日期????時(shí)間???名稱
-----------?---------??----------?-----??----
?????目錄???????????0??2019-01-15?19:00??bt-master\
?????文件??????????85??2019-01-15?19:00??bt-master\.gitignore
?????文件????????1982??2019-01-15?19:00??bt-master\.travis.yml
?????文件???????11358??2019-01-15?19:00??bt-master\LICENSE
?????文件???????12581??2019-01-15?19:00??bt-master\README.md
?????文件????????8227??2019-01-15?19:00??bt-master\RELEASE-NOTES.md
?????文件????????4020??2019-01-15?19:00??bt-master\UPGRADE.md
?????文件?????????344??2019-01-15?19:00??bt-master\appveyor.yml
?????目錄???????????0??2019-01-15?19:00??bt-master\bt-bencoding\
?????文件????????1602??2019-01-15?19:00??bt-master\bt-bencoding\pom.xm
?????目錄???????????0??2019-01-15?19:00??bt-master\bt-bencoding\src\
?????目錄???????????0??2019-01-15?19:00??bt-master\bt-bencoding\src\main\
?????目錄???????????0??2019-01-15?19:00??bt-master\bt-bencoding\src\main\java\
?????目錄???????????0??2019-01-15?19:00??bt-master\bt-bencoding\src\main\java\bt\
?????目錄???????????0??2019-01-15?19:00??bt-master\bt-bencoding\src\main\java\bt\bencoding\
?????文件????????4009??2019-01-15?19:00??bt-master\bt-bencoding\src\main\java\bt\bencoding\BEEncoder.java
?????文件????????1533??2019-01-15?19:00??bt-master\bt-bencoding\src\main\java\bt\bencoding\BEIntegerBuilder.java
?????文件????????1694??2019-01-15?19:00??bt-master\bt-bencoding\src\main\java\bt\bencoding\BEListBuilder.java
?????文件????????2211??2019-01-15?19:00??bt-master\bt-bencoding\src\main\java\bt\bencoding\BEMapBuilder.java
?????文件?????????822??2019-01-15?19:00??bt-master\bt-bencoding\src\main\java\bt\bencoding\BEob
?????文件????????6543??2019-01-15?19:00??bt-master\bt-bencoding\src\main\java\bt\bencoding\BEParser.java
?????文件????????2585??2019-01-15?19:00??bt-master\bt-bencoding\src\main\java\bt\bencoding\BEPrefixedTypeBuilder.java
?????文件????????2312??2019-01-15?19:00??bt-master\bt-bencoding\src\main\java\bt\bencoding\BEStringBuilder.java
?????文件?????????909??2019-01-15?19:00??bt-master\bt-bencoding\src\main\java\bt\bencoding\BEType.java
?????文件????????1447??2019-01-15?19:00??bt-master\bt-bencoding\src\main\java\bt\bencoding\BtParseException.java
?????文件????????1419??2019-01-15?19:00??bt-master\bt-bencoding\src\main\java\bt\bencoding\ByteStringComparator.java
?????文件????????2729??2019-01-15?19:00??bt-master\bt-bencoding\src\main\java\bt\bencoding\Scanner.java
?????目錄???????????0??2019-01-15?19:00??bt-master\bt-bencoding\src\main\java\bt\bencoding\model\
?????文件????????2274??2019-01-15?19:00??bt-master\bt-bencoding\src\main\java\bt\bencoding\model\BEInteger.java
?????文件????????1116??2019-01-15?19:00??bt-master\bt-bencoding\src\main\java\bt\bencoding\model\BEIntegerModel.java
?????文件????????2313??2019-01-15?19:00??bt-master\bt-bencoding\src\main\java\bt\bencoding\model\BEList.java
............此處省略906個(gè)文件信息
評(píng)論
共有 條評(píng)論