参照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这中方式。
阅读(1496) | 评论(0) | 转发(0) |