Клиент-серверный Java-интерфейс: чтение / запись, приводящая к зависанию программы

Я делаю клиент-серверную программу на Java (включая GUI). У меня есть следующий код в клиенте:

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

  }

}

И следующий код на сервере:

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

Но когда нажимается кнопка, которая вызывает SBListener, программа останавливается, когда достигает точки, где Сервер ожидает fn / ln / username. Я добавил кучу операторов system.out для отладки, и я получаю тот, который говорит «написал логическое значение, ожидая fn / ln / un».

По сути, я пытаюсь обновить экран после того, как Сервер возвращает ложное значение. В частности, я хочу добавить два текстовых поля для имени и фамилии. Затем я хочу отправить эти значения на сервер.

Может кто-нибудь сказать мне, как это исправить? Заранее благодарю за любую помощь!

Ответы на вопрос(2)

Ваш ответ на вопрос