Client-Server-Java-GUI: Lese- / Schreibzugriff führt zum Einfrieren des Programms
Ich mache ein Client / Server-Programm in Java (einschließlich einer GUI). Ich habe folgenden Code im Client:
public class SBListener implements ActionListener{
public void actionPerformed(ActionEvent e){
try{
outToServer.writeUTF(usn.getText().trim());
System.out.println("sent username to server");
playerExists = inToClient.readBoolean();
System.out.println("past getting player");
System.out.println("player exists = " + playerExists);
}catch(IOException a){
System.err.println(a);
}
if(playerExists == false){
JButton submitInfo = new JButton("submit info");
submitInfo.addActionListener(new SBNewInfoListener());
init.add(new JLabel(""));//dummy element to get the right alignment
init.add(new JLabel("First Name:"));
init.add(fn);
init.add(new JLabel("Last Name:"));
init.add(ln);
init.add(submitInfo);
add(init, BorderLayout.WEST);
init.setVisible(true);
init.revalidate();
init.repaint();
}
}
}
Und der folgende Code auf dem Server:
String username = inp.readUTF();
System.out.println(username);
out.writeBoolean(false);
System.out.println("wrote boolean, waiting for fn/ln/un");
fn = inp.readUTF();
System.out.println("got fn");
ln = inp.readUTF();
un = inp.readUTF();
Wenn Sie jedoch auf die Schaltfläche klicken, die SBListener aufruft, reagiert das Programm nicht mehr, wenn der Server auf fn / ln / username wartet. Ich habe eine Reihe von system.out-Anweisungen zum Debuggen hinzugefügt und komme zu der Anweisung, die "Boolean geschrieben und auf fn / ln / un gewartet" lautet.
Grundsätzlich versuche ich, den Bildschirm zu aktualisieren, nachdem der Server einen falschen Wert zurückgibt. Insbesondere möchte ich zwei Textfelder für Vor- und Nachnamen hinzufügen. Ich möchte diese Werte dann an den Server senden.
Kann mir jemand sagen, wie man das behebt? Vielen Dank im Voraus für jede Hilfe!