Моя программа прослушивает только одно соединение один раз... программа просто застревает в clientSocket = serverSocket.accept(), если клиент не подключается. Я имею в виду, что я даже не могу прервать его, закрыв окно. Я не могу нажать ни одну из моих кнопок в кадре и т.д.
Я использовал этот код таким же образом в других своих программах, но он работал нормально (я могу щелкать текстовые поля и кнопки и прочее и вводить в них значения, для этого он просто зависает там, пока клиент не подключится, даже не может выход).
public void runServer() {
try {
serverSocket = new ServerSocket(PORT_NUMBER, 20);
clientSocket = serverSocket.accept();
taDisplay.append("Client connected!");
lblPlayingTo.setText("Playing to: " + objective);
socketIn = new DataInputStream(clientSocket.getInputStream());
socketOut = new DataOutputStream(clientSocket.getOutputStream());
socketOut.writeUTF(serverName);
clientName = socketIn.readUTF();
lblEastScore.setText(clientName + ": " + eastScore.getScore());
} catch (IOException e) {
System.out.println(e);
taDisplay.append("Could not listen on port: " + PORT_NUMBER + ".\n");
}
}
Я удалил весь свой код, кроме этого (ниже), но все равно сталкиваюсь с той же проблемой «зависания».
setTitle(title);
setSize(sizeW, sizeH);
setVisible(visibility);
setResizable(resizability);
setLocationRelativeTo(null);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
addKeyListener(new MyKeyAdapter());
addMouseListener(new MyMouseAdapter());
//Container
c = getContentPane();
c.setLayout(new BorderLayout());