Client-Server Java GUI: program do odczytu / zapisu powodujący zamrożenie

Robię program klient / serwer w Javie (w tym GUI). Mam następujący kod u klienta:

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();
     }

  }

}

I następujący kod na serwerze:

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();

Ale po kliknięciu przycisku wywołującego SBListener program zawiesza się, gdy dojdzie do punktu, w którym serwer czeka na fn / ln / username. Dodałem kilka instrukcji system.out do debugowania i przechodzę do tego, który mówi: „napisał logiczną, czekając na fn / ln / un”.

Zasadniczo próbuję zaktualizować ekran po tym, jak serwer zwróci fałszywą wartość. W szczególności chcę dodać dwa pola tekstowe dla imienia i nazwiska. Następnie chcę wysłać te wartości na serwer.

Czy ktoś może mi powiedzieć, jak to naprawić? Z góry dziękuję za wszelką pomoc!

questionAnswers(2)

yourAnswerToTheQuestion