public void run() {
		while (true) {
			try {
				Socket socket = mServerSocket.accept(); // Wait for a new peer
				Log.i("PeerAccepter", "New Peer connected ->");
				
				MessageInputStream mis = new MessageInputStream(socket.getInputStream());
				Handshake handshake = mis.readHandShake();
				
				Hash infoHash = handshake.getInfoHash();
				
				Torrent torrent = mTorrentManager.getTorrent(infoHash);
				
				// If the torrent isn't in the TorrentManager's list
				if (torrent == null) {
					socket.close();
					
				} else {
					
					// Create the peer and put it into the Torrent Peers' List
					Peer peer = new Peer(socket.getInetAddress(), socket.getPort(), torrent);
					peer.setID(handshake.getPeerId());
					peer.setSocket(socket);
					peer.setEncryption(handshake.isEncryptionActivated());
					torrent.addPeer(peer);
				}
				
			} catch (BindException e) {
				Log.e("PeerAccepter", "Bind Error, " + e.getMessage());
				
			} catch (IOException e) {
				e.printStackTrace();
				Log.e("PeerAccepter", "Error while connecting with a peer.");
			}
			
			try {
				sleep(100L);
			} catch (InterruptedException e) {
				Log.e("PeerAccepter", "Thread.sleep()");
			}
		}
	}