import java.net.InetSocketAddress;
import java.nio.ByteBuffer;
import java.nio.channels.AsynchronousSocketChannel;
import java.util.Scanner;
import java.util.concurrent.Future;

public class AsyncEchoClient {
    public static void main(String[] args) {
        try {
            AsynchronousSocketChannel clientChannel = AsynchronousSocketChannel.open();
            Future<Void> future = clientChannel.connect(new InetSocketAddress("localhost", 4711));
            future.get();  // Warten, bis die Verbindung hergestellt ist

            System.out.println("Verbunden mit dem Server. Tippen Sie Ihre Nachrichten:");

            Scanner scanner = new Scanner(System.in);
            while (true) {
                String message = scanner.nextLine();

                // Schicken Sie die Nachricht zum Server
                ByteBuffer buffer = ByteBuffer.wrap(message.getBytes());
                clientChannel.write(buffer).get();  // Blockiert bis der Buffer geschrieben ist

                buffer.clear();

                // Lesen Sie die Antwort vom Server
                clientChannel.read(buffer).get();  // Blockiert bis eine Antwort gelesen ist
                buffer.flip();

                byte[] responseBytes = new byte[buffer.remaining()];
                buffer.get(responseBytes);
                String response = new String(responseBytes);

                System.out.println("Antwort vom Server: " + response);

                buffer.clear();
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}