请把我的JavaUDP通信项目添加用户设置模块，让用户可以选择端口号和IP地址，要求使用适配器模式，并且代码要遵循Google Java Style，输出全部代码
user
```java
// UdpSettings.java
package com.example.udpcommunication;

public class UdpSettings {
    private int port;
    private String ipAddress;

    public UdpSettings(int port, String ipAddress) {
        this.port = port;
        this.ipAddress = ipAddress;
    }

    public int getPort() {
        return port;
    }

    public String getIpAddress() {
        return ipAddress;
    }

    public void setPort(int port) {
        this.port = port;
    }

    public void setIpAddress(String ipAddress) {
        this.ipAddress = ipAddress;
    }
}

// UdpSettingsAdapter.java
package com.example.udpcommunication;

public interface UdpSettingsAdapter {
    void applySettings(UdpSettings settings);
}

// UdpClient.java
package com.example.udpcommunication;

import java.net.DatagramSocket;
import java.net.InetAddress;

public class UdpClient implements UdpSettingsAdapter {
    private DatagramSocket socket;
    private InetAddress serverAddress;
    private int serverPort;

    public UdpClient() {
        // Initialization code for UdpClient
    }

    @Override
    public void applySettings(UdpSettings settings) {
        try {
            this.serverAddress = InetAddress.getByName(settings.getIpAddress());
            this.serverPort = settings.getPort();
            this.socket = new DatagramSocket();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    // Other methods for sending and receiving data
}

// UdpServer.java
package com.example.udpcommunication;

import java.net.DatagramSocket;

public class UdpServer implements UdpSettingsAdapter {
    private DatagramSocket socket;
    private int port;

    public UdpServer() {
        // Initialization code for UdpServer
    }

    @Override
    public void applySettings(UdpSettings settings) {
        try {
            this.port = settings.getPort();
            this.socket = new DatagramSocket(this.port);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    // Other methods for sending and receiving data
}

// Main.java
package com.example.udpcommunication;

public class Main {
    public static void main(String[] args) {
        UdpSettings settings = new UdpSettings(9876, "127.0.0.1");

        UdpClient client = new UdpClient();
        client.applySettings(settings);

        UdpServer server = new UdpServer();
        server.applySettings(settings);

        // Further code for running the client and server
    }
}
```
assistant