gpt4 book ai didi

Java swing GUI 卡住

转载 作者:行者123 更新时间:2023-12-01 17:28:52 25 4
gpt4 key购买 nike

我正在使用套接字编写 Java 客户端/服务器 GUI 应用程序,问题如下:

我有一个按钮可以开始监听指定端口:

按钮 Action 执行方法

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

“套接字”类扩展“线程”
因此,在 ss.accept() 返回一个值后,它会在单独的线程中创建新的套接字实例。

单击按钮后,GUI 卡住,因为在 socket.listen 方法内部存在无限循环。我怎样才能避免这种情况?

最佳答案

您的设计中有两个陷阱:

  1. ss.accept() 是一个阻塞调用,因此您的 UI 将卡住,直到有传入连接
  2. 切勿在 EDT 中运行 while(true) 循环。

而是执行以下操作:

  • 单击按钮后,创建一个线程,该线程将开始监听传入连接。
  • 只要有传入连接,就创建另一个线程来接收传入的客户端连接并对其进行处理。

关于Java swing GUI 卡住,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61164171/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com