gpt4 book ai didi

Java swing GUI 卡住

转载 作者:搜寻专家 更新时间:2023-10-31 08:11:12 29 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/11185485/

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