gpt4 book ai didi

java - 使用 SWT 进行 UI 的简单 Socket (Java) 应用程序中的 UI 卡住

转载 作者:行者123 更新时间:2023-12-02 00:31:27 24 4
gpt4 key购买 nike

我是 Java 套接字编程新手,目前正在探索其套接字 API。我创建了一个新的简单应用程序,它启动 ServerSocket 并监听客户端,当客户端在套接字上写入内容时,服务器会为该客户端分配新线程。我首先尝试使用控制台应用程序,一切正常。现在,我使用 SWT(Eclipse 3.7 中的 WindowBuilder 插件)制作了 GUI。该窗口有一个按钮,可以打开和关闭服务器的监听。下面是在 SWT Button 的单击事件中编写的代码,它将开始监听客户端。

if(!isServerRunning)
{
btnServerRunner.setText("Stop Server");
isServerRunning = true;
while (listening)
{
try
{
new ClientHandler(listener.accept()).start();
}
catch(Exception ex)
{
ex.printStackTrace();
}
}
}
else
{
try
{
listener.close();
}
catch(Exception ex)
{
ex.printStackTrace();
}
btnServerRunner.setText("Start Server");
isServerRunning = false;
}

ClientHandler 类扩展了 Thread,因此将为每个新客户端启动新线程。我知道上面的代码适用于控制台应用程序,但不适用于 GUI,因为我将应用程序放入在按钮单击中监听客户端套接字的无限循环中。启动和停止 ServerSocket 来监听客户端而不卡住应用 UI 的优雅方法是什么?

谢谢。

最佳答案

您应该使用单独的线程来接受客户端连接。该按钮可以启动和中断该线程。

关于java - 使用 SWT 进行 UI 的简单 Socket (Java) 应用程序中的 UI 卡住,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8986603/

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