Chinaunix首页 | 论坛 | 博客
  • 博客访问: 907741
  • 博文数量: 201
  • 博客积分: 8078
  • 博客等级: 中将
  • 技术积分: 2162
  • 用 户 组: 普通用户
  • 注册时间: 2008-05-20 17:22
文章分类

全部博文(201)

文章存档

2013年(3)

2012年(11)

2011年(34)

2010年(25)

2009年(51)

2008年(77)

分类: 系统运维

2009-09-05 22:55:43

参照utorrent的行为,对比文档中的区别有:
1、支持的请求是: ping get_peers find_node announce_peer
{ "d1:ad2:id20:abcdefghij0123456789e1:q4:ping1:t1:P1:y1:qe" };
{“d1:ad2:id20:abcdefghij01234567896:target20:abcdefghij0123456789e"
      "1:q9:find_node1:t4:FFFF1:y1:qe" }
{ "d1:ad2:id20:000000000000000000009:info_hash"
      "20:mnopqrstuvwxyz1234564:porti6882e5:token20:00000000000000000000e"
      "1:q13:announce_peer1:t3:xxl1:y1:qe"}
{  "d1:ad2:id20:000000000000000000009:info_hash"
        "20:mnopqrstuvwxyz123456e1:q9:get_peers1:t1:X1:y1:qe"}
2、响应数据包格式为
ping 和 announce_peer 的响应包:
{ "d1:rd2:id20:098765432112345567890e1:t3:xxl1:v4:UT=.1:y1:re" }
对于 find_node 的响应包:
{ "d1:rd2:id20:0987654321123455678905:nodes208:.......e1:t3:xxl1:v4:UT=.1:y1:re" }
对于 get_peers 的响应包:
{ "d1:rd2:id20:0987654321123455678905:nodes182:.......5:token20:xxxx...e"
      "1:t3:xxl1:v4:UT=.1:y1:re" }
或者:
{ "d1:rd2:id20:0987654321123455678905:nodes182:......."
      "6:valuesl6:xxxxxx6:yyyyyye5:token20:xxxx...e"
      "1:t3:xxl1:v4:UT=.1:y1:re" }
3、对于utorrent来说,token是20字节的类似SHA1数值的字符串。
4、可以看出即使能够找到values,get_peers也会同时返回最近的nodes的。
5、utorrent不会对peer进行合并操作,所以返回的数据的peer中存在重复的
6、似乎router.utorrent.com:6881对于announce_peer只是简单的响应,并不会存储peer信息,所以下次请求一样会是空的。
7、很明显 announce_peer 不是文档例子中的 announce_peers了。
8、t是长度>1的串。而不是文档例子中的一个整数。
9、对于values的格式是 l6:xxxxxx6:yyyyyy6:zzzzzze这中方式。
阅读(1442) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~