我的程序只监听一个连接...如果没有客户端连接,程序就会卡在 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());