Welcome to OStack Knowledge Sharing Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
742 views
in Technique[技术] by (71.8m points)

c - Why does tracker server NOT understand my request? (Bittorrent protocol)

I'm trying to implement Bittorent in C. First of all, before writing a code snippet, I tried to used a web browser to send the following message(URL) to the tracker server.

you may try this 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

I have downloaded the torrent file from this link which is named dapper-dvd-i386.iso and has 9bdbbb49f085a2d15d96acfabff8310600314fe0 as SHA-1 value.

However, after sending above request, I get

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

Why does tracker server NOT understand my reqeust? Any specs from Internet does not help me.
Any help would be awesome. Thank you in advance.

See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Answer

0 votes
by (71.8m points)

It is because the request string don't have compact=1 in it.
Most tracker require that nowadays. The legacy way is too ineffective.

See BEP 23: Tracker Returns Compact Peer Lists http://www.bittorrent.org/beps/bep_0023.html

Try:

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

and the answer from the tracker is:

d8:completei4e10:incompletei0e8:intervali1800e5:peers6:******e

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome to OStack Knowledge Sharing Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...