所以我制作了一个具有 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();
}
那么如何让这个程序可以处理服务器和客户端,但仍然可以响应?,因为服务器等待客户端连接,同时客户端可以连接到服务器?