当前位置: 首页 > 知识库问答 >
问题:

为什么在我点击startButton连接到服务器(JavaFX)后服务器GUI会冻结?

顾斌
2023-03-14

这是一个交通灯项目。GUI是一个服务器。在GUI上,我使用一个按钮启动服务器,但我的GUI被冻结,因为它正在等待客户端。克莱恩夫妇只是接受者。我知道我应该使用线程,但我不知道如何使用。问题是GUI的冻结。请帮帮我

public class Controller {
public TextArea meldingPlass;

private static int portNr = 5555;

public void startServer() throws IOException {
    Server cs = new Server();
    cs.connectToServer(portNr);

}

}

//这是我的课

公共类ServerThread扩展线程{

Socket s;
InetAddress ca;


public ServerThread(Socket s)
{
    this.s=s;
    ca=s.getInetAddress();
}

public void run()
{
    try(
            PrintWriter out=new PrintWriter(s.getOutputStream(),true);
            //BufferedReader in = new BufferedReader(new InputStreamReader(s.getInputStream()));
            )
    {
        while (true){
            System.out.println(ca.getHostAddress());
            out.println("Status of Server");
        }
      //  s.close();
    }
    catch(Exception e){
        System.out.println(e);
    }


}

}

//下面是ServerClass公共类服务器实现Runnable{

public  void connectToServer(int portNr){
    try(
        ServerSocket ss = new ServerSocket(portNr);
    )
    {
        while (true)
        {
            System.out.println("In Server - while loop");
           ServerThread st = new ServerThread(ss.accept());
            System.out.println("Client connected. Starting client");
            st.start();

        }
    }
    catch (Exception e){
        System.out.println("Exception occurred when trying to listen on port "
                +portNr+ " or listening for a connection");
        System.out.println(e.getMessage());
    }
}

@Override
public void run() {

}

}

共有1个答案

柴文林
2023-03-14

您没有显示所有必需的代码。最有可能的是,您正在JavaFX线程上运行服务器。

无论如何,这里有一个关于如何创建web服务器的优秀资源。

 类似资料:
  • 我试图连接到存在于Weblogic服务器中的JMS队列。我的客户端应用程序部署在Webphere应用程序服务器上。为了创建一个连接到Weblogic JMS的JMS提供程序,我必须使用哪些jars?需要您的帮助,请...

  • 问题内容: 我使用JDBC连接到MySQL。在时,一切正常。 但是,当我将应用程序移动到Intranet中的另一台计算机上并用于连接到MySQL数据库时,大约需要1分钟才能成功连接到MySQL。这是怎么回事? 问题答案: 好吧,这可能是DNS问题。您可以通过从配置文件中的选项开始禁用DNS主机名查找。 在这里阅读更多详细信息:http : //dev.mysql.com/doc/refman/5.

  • 我正在尝试连接两个docker容器,一个是posgresql,另一个是python flask应用程序。两者都链接正确,python应用程序中的所有连接变量都直接取自postgres容器中通过链接公开的连接变量,并且与检查postgresql容器时发现的连接变量相同。当我将psql与连接字符串中的精确参数一起使用时,即: 成功连接到postgres容器中的数据库,因此我知道postgres正在通过

  • 我制作了一个FTP客户端(被动),它无法连接到服务器。我使用的FTP服务器是Filezilla;我只是用它来测试。每次我运行java程序(FTP客户端)时,Filezilla都会断开连接,并在Eclipse中出现以下错误: 这是FTP客户端: 这是我连接的程序: 还尝试编写我的lan ip而不是

  • 我使用Sabre DAV在PHP中实现了一个webdav目录,用于我的网站(Application Server Webinterface)。 对于这个网站,我现在使用C#编写了一个TCP套接字,它运行在另一个服务器上(实际上它在同一个数据中心,但从理论上讲,它在另一个半球上)。 我想连接我的网络Dav到我的套接字的FTP服务器,这意味着文件监听,下载,上传。用户只能连接到一个服务。想象一下,我的

  • 线程“main”io.netty.channel.abstractchannel$AnnotatedConnectException:连接被拒绝:无进一步信息:/127.0.0.1:8888在sun.nio.channel.checkConnect(本机方法)在sun.nio.channel.socketchannel.finishConnect(未知源)在io.netty.channel.soc