class Tracker(): """Tracker for torrents""" def __init__(self, ip, port=None, dbName=None): self.ip = ip self.port = port if dbName: self.db = DB(dbName).db else: self.db = None self.socket = None self.groups = {} # start the tracker server def Start(self): # create a tcp thread self.socket = Socket(self.ip, self.port).TCP() self.socket.bind((self.ip, self.port)) # now listen for any incomming connection print "Tracker listening at "+ self.ip + ":"+str(self.port) self.socket.listen(5) while True: clientSocket, (ip, port) = self.socket.accept() print "Responding to ", ip, port clientThread = ClientThread(self, clientSocket, ip, port) clientThread.start()
class Server(): """Server for torrent files""" def __init__(self, ip, port=None, dbName=None): self.socket = None self.ip = ip self.port = port self.db = DB(dbName).db """ Start the server """ def Start(self): # create a tcp socket self.socket = Socket(self.ip, self.port).TCP() self.socket.bind((self.ip, self.port)) # listen for any incomming connections print "Listening at: ", (self.ip, self.port) self.socket.listen(5) while True: clientSocket, (ip, port) = self.socket.accept() print "Responding to : ", ip, port clientThread = ClientThread(self, clientSocket, ip, port) clientThread.start()
def SendFile(self, file_name): print "Waiting for any group connection at ", self.ip, self.port, "..." # keep connection open, listen sock = Socket(self.ip, self.port).TCP() sock.bind((self.ip, self.port)) sock.listen(5) # accept connection from tracker while True: groupSocket, (ip, port) = sock.accept() print "Seeding to group ", ip, port groupThread = ClientThread(groupSocket, ip, port, file_name) groupThread.start()