我正在编写一个使用套接字(sockets)的Java客户端/服务器GUI应用程序,以下是问题:
我有一个按钮来开始监听指定的端口:
按钮actionPerformed方法
我有一个按钮来开始监听指定的端口:
按钮actionPerformed方法
private void listenButtonActionPerformed(java.awt.event.ActionEvent evt) {
int port = Integer.parseInt(portTextfield.getText(), 10);
try {
socket.listen(port);
} catch (IOException ex) {
}
}
这里是socket.listen方法。
public static void listen() throws IOException {
ServerSocket ss = new ServerSocket(port);
while (true)
new socket(ss.accept());
}
"socket"类继承自"Thread"
因此,在ss.accept()返回一个值后,它会在单独的线程中创建新的socket实例。
点击按钮后,GUI会冻结,因为socket.listen方法内部有一个无限循环。我该如何避免这种情况?