everclient
index
/afs/csl.tjhsst.edu/students/2007/awang/compsci/techlab/EverTorrent/everclient.py

This is a test Bittorrent client that performs basic operations, used to test the Bittorrent tracker. It's not going to be an important part of the project, but it's much easier simply to write a test client than try and hack an existing one to respond properly.
 
Currently the client can send both announce and scrape requests to a tracker and bdecode and display the response.

 
Modules
       
bencode
commands
random
string
sys
time
types
urllib

 
Classes
       
g

 
class g
    Globals class that can be used instead of lots of global statements
 
  Data and other attributes defined here:
NAME = 'EverClient'
PORT = '6969'
SERVER = 'hermit'
VERSION = '0.4'
host = 'hermit'
optional = {'ip': '127.0.0.1', 'key': 'hermit', 'numwant': '3', 'trackerid': ''}
required = {'downloaded': '0', 'event': 'started', 'info_hash': '874685594255', 'left': 123, 'peer_id': 'hermit561848466743', 'port': '6881', 'uploaded': '0'}
url = ''

 
Functions
       
main()
read_torrent(torrentfile)
Reads in an external .torrent metadata file and sets announce request data appropriately.
send_http_get(request='announce')
Function constructs the dictionary of required data for the request and sends a HTTP GET request through a url to the tracker. This handles both announce and scrape requests through the use of an argument.
 
See http://wiki.theory.org/BitTorrentSpecification for the complete details (this is the most comprehensive page in existence, besides referring to the official Bittorrent client's source code).