2013-07-02 62 views
4

我想在C中实现Bittorent。首先,在编写代码片段之前,我尝试使用Web浏览器向跟踪器服务器发送以下消息(URL)。为什么跟踪器服务器不理解我的请求? (Bittorrent协议)

你可以试试这个网址。

http://torrent.ubuntu.com:6969/announce? 
info_hash=%9b%db%bbI%f0%85%a2%d1%5d%96%ac%fa%bf%f81%06%001O%e0 
&peer_id=ABCDABCDABCDABCDABCD&port=6882&downloaded=0 
&uploaded=0 
&left=0 
&event=started 

我从this link被命名为短小精悍-DVD-i386.iso并具有9bdbbb49f085a2d15d96acfabff8310600314fe0为SHA-1的值下载torrent文件。

然而,上述请求发送后,我得到

your client is outdated, please upgrade 
(HTTP 400 bad request) 

为什么tracker服务器不理解我的reqeust?来自互联网的任何规格都不能帮助我。
任何帮助将是真棒。先谢谢你。

+0

请包括代码哟你用它来产生你的请求。 – jxh

+1

当我尝试C代码时,我得到了与Web浏览器相同的结果。您可以使用您的网络浏览器尝试在URL上方。 – inherithandle

+0

@jxh我认为URL会有问题。所以我希望有人更正我的网址。 – inherithandle

回答

9

这是因为请求字符串中没有compact=1
现在大多数追踪器都需要。传统方式太无效。

见BEP 23:跟踪返回紧凑peer列表http://www.bittorrent.org/beps/bep_0023.html

尝试:

http://torrent.ubuntu.com:6969/announce? 
info_hash=%9b%db%bbI%f0%85%a2%d1%5d%96%ac%fa%bf%f81%06%001O%e0 
&peer_id=ABCDABCDABCDABCDABCD&port=6882&downloaded=0 
&uploaded=0 
&left=0 
&event=started 
&compact=1 

http://torrent.ubuntu.com:6969/announce?info_hash=%9b%db%bbI%f0%85%a2%d1%5d%96%ac%fa%bf%f81%06%001O%e0&peer_id=ABCDABCDABCDABCDABCD&port=6882&downloaded=0&uploaded=0&left=0&event=started&compact=1 

,并从跟踪的答案是:

d8:completei4e10:incompletei0e8:intervali1800e5:peers6:******e 
相关问题