Look at the old source code of the Bittorrent client for ideas! On Jan 8, 2008 8:51 PM, Dom Rout <[EMAIL PROTECTED]> wrote:
> Hello. > Well, this is my first post on any USENET group anywhere, so I hope I > get it right. Basically, I just want to get some opinions on a plan of > mine for a new project. > > I want to produce a small, peer to peer, file sharing network for the > use of myself and some of my friends. The purpose of this is basically > to allow us to share files conveniently without relying on technology > such as Windows Live Messenger (Yuck). > > I have a VPS which I would like to dedicate to the task of acting as a > tracker, so I can run a server application written in python on it. I > will also write the first client in python, although I may go for a > different language for the client in the final version, for > performance. For now, Python is perfect because of the ease of use > that it offers and the fact that I already know a bit about socket > programming using it. > > Also concerning architecture, I will also have a number of peers that > connect to the tracker and also to other peers, via an IP address > provided by the server, as necessary to download the files. > > The files themselves should be split up into "Chunks" of fixed length, > which will be given an index and tracked by the server. The server > should know which clients have which chunks of a file, and when a > client needs to download a file the server should look for other > clients that have chunks from that file and give the IP address to the > client, which should then for a connection to this peer and download > the parts of the file that are available. > > When managing the chunks of a file, I will need to use a mutex to > allow reading and writing of them. I should provide a getter and > setter method in each file to allow chunks to be placed into it more > conveniently. The getter and setter should both use mutex's to allow > multiple threads of uploads and downloads at the same time. > > I will need to implement a username and password system, to restrict > the users of the system to people that I trust. > > To uniquely identify a file, I would like to use a file path. There > should be a theoretical directory that contains all shared files, > although the client should be given the option of which files from the > directory to download. > > This directory should look like: > "Global/" > "Global/Images/" > "Global/Music/" > "Users/<username>/<sharedfolder>" > > It would be nice if it was possible to subscribe to certain > directories, and download new files from them as need be. > > Well, these are my ideas so far. Is anything drastically obviously > wrong, and can anyone suggest to me any best practices when > implementing this sort of design? > > Thanks, Dominic Rout. > -- > http://mail.python.org/mailman/listinfo/python-list > -- http://search.goldwatches.com/?Search=Movado+Watches http://www.jewelerslounge.com http://www.goldwatches.com
-- http://mail.python.org/mailman/listinfo/python-list