@Override
	public void run() {
		try {
			System.out.println("TCP Listener started on IP: " + InetAddress.getLocalHost().getHostAddress() + " Port: " + TCP_PORT);
		} catch (UnknownHostException e1) {
			System.out.println("TCP Listener started on IP: UNKOWN Port: " + TCP_PORT);
		}
		
		while (true) {
			try {
				final Socket sock = mSocket.accept();
				System.out.println("New Player connected: " + sock.getInetAddress().toString());
				final Player player = new Player(sock, new iAction<Player>() {
					
					@Override
					public void perform(Player data) {
						mConnectedPlayers.remove(data);
						if (fPlayerDisconnectedAction != null)
							fPlayerDisconnectedAction.perform(data);
					}
				});
				mConnectedPlayers.add(player);
				player.start();
				
				if (fPlayerConnectedAction != null) {
					fPlayerConnectedAction.perform(player);
				}
			} catch (IOException e) {						
				e.printStackTrace();
			}
		}	
	}