@Override
    public boolean generateClientSettings(final File settingsFile) {
        LOG.log(Level.FINE, "Generating client settings.");

        final SimpleXMLSettingsFile xml = new SimpleXMLSettingsFile();

        boolean result = false;
        try {            
            final Enumeration<NetworkInterface> nets = NetworkInterface.getNetworkInterfaces();

            for (NetworkInterface n : Collections.list(nets)) {
                if (n.isUp()) {
                    for (InetAddress address : Collections.list(n.getInetAddresses())) {
                        xml.addField(
                                XmlNodes.SERVER.toString(),
                                ClientSettings.composeServerAddress(address, serverSocket.getPort()));
                    }
                }
            }
            
            result = xml.storeXML(settingsFile);
        } catch (SocketException ex) {
            LOG.log(Level.WARNING, "Error listing available network interfaces.", settingsFile.getAbsolutePath());
            LOG.log(Level.FINE, "Error listing available network interfaces.", ex);
        } catch (IOException ex) {
            LOG.log(Level.WARNING, "Error accessing client settings at {0}.", settingsFile.getAbsolutePath());
            LOG.log(Level.FINE, "Error accessing client settings at " + settingsFile.getAbsolutePath() + ".", ex);
        }

        return result;
    }