Torrent文件格式

news/2024/7/4 12:30:34
刚找到的,不敢独享,发来看看   
  Torrent文件格式   
    
  BT种子文件格式   
    
  BT种子文件使用了一种叫bencoding的编码方法来保存数据。   
  bencoding现有四种类型的数据:srings(字符串),integers(整数),lists(列表),dictionaries(字典)   
  编码规则如下:   
  strings(字符串)编码为:<字符串长度>:<字符串>   
  例如:   4:test   表示为字符串"test"   
  4:例子   表示为字符串“例子”   
  字符串长度单位为字节   
  没开始或结束标记   
    
  integers(整数)编码为:i<整数>e   
  开始标记i,结束标记为e   
  例如:   i1234e   表示为整数1234   
  i-1234e   表示为整数-1234   
  整数没有大小限制   
  i0e   表示为整数0   
  i-0e   为非法   
  以0开头的为非法如:   i01234e   为非法   
    
  lists(列表)编码为:l<bencoding编码类型>e   
  开始标记为l,结束标记为e   
  列表里可以包含任何bencoding编码类型,包括整数,字符串,列表,字典。   
  例如:   l4:test5abcdee   表示为二个字符串["test","abcde"]   
    
  dictionaries(字典)编码为d<bencoding字符串><bencoding编码类型>e   
  开始标记为d,结束标记为e   
  关键字必须为bencoding字符串   
  值可以为任何bencoding编码类型   
  例如:   d3:agei20ee   表示为{"age"=20}   
  d4:path3:C:/8:filename8:test.txte   表示为{"path"="C:/","filename"="test.txt"}   
    
  具体文件结构如下:   
  全部内容必须都为bencoding编码类型。   
  整个文件为一个字典结构,包含如下关键字   
  announce:tracker服务器的URL(字符串)   
  announce-list(可选):备用tracker服务器列表(列表)   
  creation   date(可选):种子创建的时间,Unix标准时间格式,从1970   1月1日   00:00:00到创建时间的秒数(整数)   
  comment(可选):备注(字符串)   
  created   by(可选):创建人或创建程序的信息(字符串)   
  info:一个字典结构,包含文件的主要信息,为分二种情况:单文件结构或多文件结构   
  单文件结构如下:   
                      length:文件长度,单位字节(整数)   
                      md5sum(可选):长32个字符的文件的MD5校验和,BT不使用这个值,只是为了兼容一些程序所保留!(字符串)   
                      name:文件名(字符串)   
                      piece   length:每个块的大小,单位字节(整数)   
                      pieces:每个块的20个字节的SHA1   Hash的值(二进制格式)   
  多文件结构如下:   
                      files:一个字典结构   
                                    length:文件长度,单位字节(整数)   
                                    md5sum(可选):同单文件结构中相同   
                                    path:文件的路径和名字,是一个列表结构,如/test/test.txt   列表为l4:test8test.txte   
                      name:最上层的目录名字(字符串)   
                      piece   length:同单文件结构中相同   
                      pieces:同单文件结构中相同     
  实例:   
  用记事本打开一个.torrent可以看来类似如下内容   
  d8:announce35:http://www.manfen.net:7802/announce13:creation   datei1076675108e4:infod6:lengthi17799e4:name62:MICROSOFT.WINDOWS.2000.AND.NT4.SOURCE.CODE-SCENELEADER.torrent12:piece   lengthi32768e6:pieces20:?W   ?躐?緕排T酆ee   
    
  很容易看出   
  announce=http://www.manfen.net:7802/announce   
  creation   date=1076675108秒(02/13/04   20:25:08)   
  文件名=MICROSOFT.WINDOWS.2000.AND.NT4.SOURCE.CODE-SCENELEADER.torrent   

  文件大小=17799字节


原文地址:http://blog.csdn.net/zjg555543/article/details/4553338



http://www.niftyadmin.cn/n/3658785.html

相关文章

cygwin/gcc与MinGW

cygwin/gcc和MinGW都是gcc在windows下的编译环境&#xff0c;但是它们有什么区别?在实际工作中如何选择这两种编译器呢?cygwin/gcc完全可以和在linux下的gcc划等号&#xff0c;这个从boost库的划分中就可以看出来端倪&#xff0c;cygwin下的gcc和linux下的gcc使用的是相同的T…

kafka集群中jmx端口设置

jmx端口主要用来监控kafka集群的。 在启动kafka的脚本kafka-server-start.sh中找到堆设置&#xff0c;添加export JMX_PORT"9999" if [ "x$KAFKA_HEAP_OPTS" "x" ]; then export KAFKA_HEAP_OPTS"-Xmx1G -Xms1G" export JMX_PORT&…

bat按任意键开始结束的脚本

功能&#xff1a; 双击 .bat -> 按任意键开始 -> do something -> 按任意键结束代码&#xff1a; echo off echo 按任意键开始 pause echo 执行中.... &#xff08;你要执行的东东&#xff09; echo 按任意键结束 pause exit

虚基类释义

#include "stdafx.h"#include#includeusing namespace std;class person{//声明基类 protected: int age; char sex; string name;public: person(int a,char s,string nam){ agea; sexs; namenam; }};class teacher:virtual public person{protected: string tit…

在Linux下后台运行,程序运行前后台切换

一、为什么要使程序在后台执行 我们计算的程序都是周期很长的&#xff0c;通常要几个小时甚至一个星期。我们用的环境是用Xshell远程连接到Linux服务器。所以使程序在后台跑有以下两个好处&#xff1a; 1&#xff1a;我们这边是否关机不影响服务器的程序运行。&#xff08;不…

C++多继承的细节

这几天写的程序应用到多继承。以前对多继承的概念非常清晰&#xff0c;可是很久没用就有点模糊了。重新研究一下&#xff0c;“刷新”下记忆。 假设我们有下面的代码&#xff1a; #include class A { private: char data; public: A(){data A;} virtual void Show(){printf(&q…

Qt读写文件的简单封装

C#中&#xff0c;有下列函数可以简单地读写文件&#xff1a;读: temp File.ReadAllText("abc.txt",Encoding.Default); 写: File.WriteAllText("abc.txt", temp, Encoding.Default);追加: File.AppendAllText("abc.txt", temp, Encoding.Def…