private void acceptClient(int clientId, String address, int port) {
		boolean clientAccepted = false;
		synchronized(CONNECTION_LOCK) {
			try {
				ClientInfo client = new ClientInfo(clientId, address, port, InetAddress.getByName(address));
				sendPacket(Packet.createConnectionAcceptedPacket(clientId), client);
				clientAccepted = true;
				clients.put(clientId, client);
				logger.fine("Client " + clientId + " connected");
			} catch (UnknownHostException e) {
				//we'll tell the listener the client disconnected outside of the synchronized block
				logger.fine("Could not accept client " + clientId + " due to UnknownHostException: " + e.getMessage());
			} catch (CouldNotSendPacketException e) {
				//we'll tell the listener the client disconnected outside of the synchronized block
				logger.fine("Could not accept client " + clientId + " due to CouldNotSendPacketException: " + e.getMessage());
			}
		}
		if(!clientAccepted)
			onClientDisconnected(clientId, Server.CLIENT_COULD_NOT_CONNECT);
	}