如何一次处理2个进程但仍具有响应性的gui java

a8jjtwal  于 2023-04-19  发布在  Java
关注(0)|答案(1)|浏览(127)

因此,我做了一个程序,有gui,可以在同一时间客户端/服务器,但我的程序只处理一个进程,例如作为一个服务器等待客户端连接,并等待它,但在此之后,我的程序是冻结

This is server 

public void server(int port) {
        try {
            try (ServerSocket server = new ServerSocket(port)) {
                serverStatus = ("Server telah dimulai di port " + port);

                while (true) {
                    // Menunggu koneksi dari client
                    serverStatus = ("Menunggu koneksi dari client...");
                    Socket robot = server.accept();
                    serverStatus = ("Terhubung");
               

                    // Menambahkan koneksi client ke daftar koneksi
                    robotSockets.add(robot);

                    // Membuat thread untuk menangani setiap koneksi client
                    Thread robotThread = new Thread(new ClientHandler(robot));
                    robotThread.start();
                }
            }

来找客户

public void client(Consumer<String> onMessageReceived) {
        Thread clientSideThread = new Thread(() -> {
            try {
                InputStream inputStream = socket.getInputStream();
                byte[] buffer = new byte[1024];
                int bytesRead;
                while ((bytesRead = inputStream.read(buffer)) != -1) {
                    String message = new String(buffer, 0, bytesRead, StandardCharsets.UTF_8);
                    onMessageReceived.accept(message);
                }

            } catch (IOException e) {
                e.printStackTrace();
                if (!socket.isClosed()) {
                    this.statusKoneksi = "Terputus";
                }
            }
        });
        clientSideThread.start();
    }

那么,如何使这个程序可以处理服务器和客户端,但仍然工作响应?,作为服务器等待客户端连接,同时作为客户端可以连接到服务器?

wztqucjr

wztqucjr1#

您可以使用不同的线程。
一个线程监听套接字连接,另一个线程执行其他GUI任务。

相关问题