因此,我做了一个程序,有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();
}
那么,如何使这个程序可以处理服务器和客户端,但仍然工作响应?,作为服务器等待客户端连接,同时作为客户端可以连接到服务器?
1条答案
按热度按时间wztqucjr1#
您可以使用不同的线程。
一个线程监听套接字连接,另一个线程执行其他GUI任务。