Hallo zusammen,
im Rahmen eines Praktikums programmiere ich ( mit einer Gruppe) ein Mensch ärgere dich nicht Spiel.
Netzwerk steht so weit, allerdings habe ich das Netzwerk unabhängig gemacht und muss es jetzt in die Grafik einbinden.
Vor dem Start wird in einer LOBBY (Javafx Button "Spiel erstellen") der Server gestartet und dann mit dem Button("Spiel Beitreten") die Clients erzeugt.
--Der Code ist noch nicht endgültig, Exceptionhandling und Sichtbarkeit der variablen kommen noch, geht gerade nur um die Funktionalität--
[CODE lang="java" title="Server" highlight="11-22"]public class Server {
public static String[] names = {"Spieler_1","Spieler_2","Spieler_3","Spieler_4"};
public static ArrayList<ClientHandler> clients = new ArrayList<>();
public static ExecutorService pool = Executors.newFixedThreadPool(4);
public Server(int PORT){
try{
ServerSocket listener = new ServerSocket(PORT);
System.out.println("Server der Lobby 1 wurde erfolgreich gestartet");
while(true){
System.out.println("[SERVER] waiting for client connection...");
Socket client = listener.accept();
System.out.println("[SERVER] Connected to client: " + counter);
ClientHandler clientThread = new ClientHandler(client, clients);
clients.add(clientThread);
pool.execute(clientThread);
}
} catch (Exception e) {
e.printStackTrace();
}
}
}[/CODE]
Der Button mit dem Clickevent führt dann die Funktion (Controller)
[CODE lang="java" title="Controller"]public void startServer() {
try{
Server Lobby = new Server(9090);
} catch (Exception e) {
e.printStackTrace();
}
}[/CODE]
Sobald der Button geklickt wurde, startet der Server sauber (Kommandozeile), aber das fenster friert ein.
Bin schon so weit gekommen, dass das an dem while (true) ... listener.accept() liegt, da der Wartet. Gibt es eine möglichkeit, dem Controller einen anderen thread für diese Funktion mitzugeben?
Ich komme da gerade überhaupt nicht weiter....
Vielen Dank schon einmal
im Rahmen eines Praktikums programmiere ich ( mit einer Gruppe) ein Mensch ärgere dich nicht Spiel.
Netzwerk steht so weit, allerdings habe ich das Netzwerk unabhängig gemacht und muss es jetzt in die Grafik einbinden.
Vor dem Start wird in einer LOBBY (Javafx Button "Spiel erstellen") der Server gestartet und dann mit dem Button("Spiel Beitreten") die Clients erzeugt.
--Der Code ist noch nicht endgültig, Exceptionhandling und Sichtbarkeit der variablen kommen noch, geht gerade nur um die Funktionalität--
[CODE lang="java" title="Server" highlight="11-22"]public class Server {
public static String[] names = {"Spieler_1","Spieler_2","Spieler_3","Spieler_4"};
public static ArrayList<ClientHandler> clients = new ArrayList<>();
public static ExecutorService pool = Executors.newFixedThreadPool(4);
public Server(int PORT){
try{
ServerSocket listener = new ServerSocket(PORT);
System.out.println("Server der Lobby 1 wurde erfolgreich gestartet");
while(true){
System.out.println("[SERVER] waiting for client connection...");
Socket client = listener.accept();
System.out.println("[SERVER] Connected to client: " + counter);
ClientHandler clientThread = new ClientHandler(client, clients);
clients.add(clientThread);
pool.execute(clientThread);
}
} catch (Exception e) {
e.printStackTrace();
}
}
}[/CODE]
Der Button mit dem Clickevent führt dann die Funktion (Controller)
[CODE lang="java" title="Controller"]public void startServer() {
try{
Server Lobby = new Server(9090);
} catch (Exception e) {
e.printStackTrace();
}
}[/CODE]
Sobald der Button geklickt wurde, startet der Server sauber (Kommandozeile), aber das fenster friert ein.
Bin schon so weit gekommen, dass das an dem while (true) ... listener.accept() liegt, da der Wartet. Gibt es eine möglichkeit, dem Controller einen anderen thread für diese Funktion mitzugeben?
Ich komme da gerade überhaupt nicht weiter....
Vielen Dank schon einmal