bt分析之bt种子制作(1)

一、torrent结构分析

上图为文本工具打开torrent文件,里面的信息并不复杂,是经过bencoding编码后生成的文件,bencoding编码可查看具体协议,下面维基百科介绍的文件格式:

announce - tracker的URL
announce-list(可选):备用tracker服务器列表(列表)
creation date(可选):种子创建的时间,Unix标准时间格式,从1970 1月1日 00:00:00到创建时间的秒数(整数)
comment(可选):备注(字符串)
created by(可选):创建人或创建程序的信息(字符串)
info - 该条映射到一个字典,该字典的键将取决于共享的一个或多个文件:
    name - 建议保存到的文件和目录名称
    md5sum(可选):同单文件结构中相同
    piece length - 每个文件块的字节数。通常为 = 256KB = 262144B
    pieces - 每个文件块的SHA-1的集成Hash。因为SHA-1会返回160bit的Hash,所以pieces将会得到1个160-bit的整数倍的字符串。和一个length(相当于只有一个文件正在共享)或files(相当于当多个文件被共享):
    length - 文件的大小(以字节为单位)
    //当是种子描述的是目录时,有下面files字段
    files  - 一个字典的列表(每个字典对应一个文件)与以下的键:
        path - 一个对应子目录名的字符串列表,最后一项是实际的文件名称
        length - 文件的大小(以字节为单位)
         md5sum(可选):同单文件结构中相同
ttorent 开源项目中,com.turn.ttorent.torrent.Torrent.java定义了相应的类型和方法,现在就依赖这里提供的方法来创建torrent文件

注:这个项目要依赖几个第三方jar包,你看readme,到网上下载相应的jar就可O(∩_∩)O~


二、torrent制作

1.因为在android中运行,我就自己封装了一次这个方法,供activity调用


/**创建种子文件
         * @param sourceFile    共享文件
         * @param torrentFile   torrent文件
         * @param trackerURL    tracker URL 格式:http://192.168.1.111:6969/announce
         * @param createBy      author
         * @return Torrent
         * */         
         @Override
	public Torrent createTorrentFile(File sourceFile, File torrentFile,
			URI announceURI,String createBy) {
		OutputStream fos = null;
		
		try {
		    fos = new FileOutputStream(torrentFile);
		    BtClient_Torrent=Torrent.create(sourceFile, announceURI, createBy);   //这是Torrent提供的方法,详情请参考源码
		    BtClient_Torrent.save(fos);
		} catch (Exception e) {
			e.printStackTrace();
		}finally{
			if (fos != null) {
				try {
					fos.close();
				} catch (IOException ioe) {
					ioe.printStackTrace();
				}
			}
		}
		return BtClient_Torrent;
	}

调用此方法,生成一个*.torrent结尾的文件

注:这里面主要用到的是bencode编码,详细编码可以参考维基百科,并且在这个项目里的com.turn.ttorrent.bdoce中封装了相应的编码方法,直接调用即可

torrent文件制作好了,接下来是前面所提到的“做种”

 bt分析之bt种子发布---做种(2)

转载于:https://my.oschina.net/blackylin/blog/113277

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值