资源简介
开源bittorrent协议实现,想学习或者做bt项目的同学可以参考。包含bencode,DHT,bittorrent 的完整实现
代码片段和文件信息
/*
* 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
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
目录 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个文件信息
相关资源
- android usb转rs232驱动
- Getting Started with SBT for Scala
- 安卓Android 通过wifi进行p2p通讯和文件
- RTL8723BU WIFI & BT
- ADBTool,类似PC豌豆荚工具
- p2p金融借贷项目源码+前端页面+数据库
- android手机上模拟的gbt28181设备端app
- javaP2P五子棋沙滩版
- 金融贷款p2p项目源码.rar
- JAVA实现的BT客户端
- android p2p 语音对话
- P2PJava--多用户在线聊天室
- 基于java的p2p文件传输代码.rar
- vbTOjava瞬间变java代码
- Android蓝牙串口调试助手 蓝牙通信 透
- jsPlumbToolkit +ztree拖拽连线demo
- 基于java socket的P2P聊天程序
- 简单的java scoket p2p聊天程序
- Java P2P聊天服务端源码
- java文件p2p传输
- Java UDP打洞、 穿透NAT,P2P通信成功源
- java DHT爬虫
- 57977JSP+MSSQL在线贷款借款网站的设计与
- 基于UDP的P2P简易聊天室
- Java P2P聊天程序附带文档
- java实现的P2P即时聊天程序
- java实现p2p通信
- jsPlumbToolkit工具版本实现的缩放及小地
- java socket实现的点对点文件传输
- jsplumbtoolkit.js 彻底破解去除域名验证
评论
共有 条评论