Peer To Peer File Sharing...



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.
.



Relevant Pages

  • Re: file transfer with sockets
    ... confirmation from client for each chunk before sending the next? ... to server, server interprets command, executes it, then simply returns ... files (hence the reading in chunks). ... sending the bytes over the stream. ...
    (microsoft.public.dotnet.languages.csharp)
  • Re: I cant find a SETUP.EXE in the SQL Plus Client ??
    ... someone else's server for testing some SELECT statements I'm writing for them. ... I just want a free client because I don't own the Oracle license. ... How do I get a free Oracle client installed, if possible, so I can test some SQL statements. ... There is no documentation with that download. ...
    (comp.databases.oracle.tools)
  • Re: Bug with Inbox app and POP3 account
    ... I have an identical problem with my 4150 - everything is set to "work" ... > when there are messages in the mailbox on the server. ... It seems that when the client sends a ... Messages download with no errors. ...
    (microsoft.public.pocketpc.phone_edition)
  • Re: Bug with Inbox app and POP3 account
    ... I have an identical problem with my 4150 - everything is set to "work" ... > when there are messages in the mailbox on the server. ... It seems that when the client sends a ... Messages download with no errors. ...
    (microsoft.public.pocketpc)
  • Re: I cant find a SETUP.EXE in the SQL Plus Client ??
    ... someone else's server for testing some SELECT statements I'm writing ... and I downloaded the "SQL Plus Instant Client". ... How do I get a free Oracle ... There is no documentation with that download. ...
    (comp.databases.oracle.tools)