7

我正在尝试在 C 中实现 Bittorent。首先,在编写代码片段之前,我尝试使用 Web 浏览器将以下消息(URL)发送到跟踪器服务器。

你可以试试这个网址。

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

我已经从此链接下载了名为dapper-dvd-i386.iso并具有9bdbbb49f085a2d15d96acfabff8310600314fe0SHA-1 值的 torrent 文件。

但是,在发送上述请求后,我得到

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

为什么跟踪服务器不理解我的请求?来自互联网的任何规格都对我没有帮助。
任何帮助都是极好的。先感谢您。

4

1 回答 1

13

这是因为请求字符串中没有compact=1
如今,大多数跟踪器都需要这样做。传统的方式太无效了。

请参阅 BEP 23:跟踪器返回紧凑的对等列表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

IE

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
于 2014-06-02T18:39:34.877 回答