Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/375.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 套接字服务器cleint_Java_Sockets_Jsf - Fatal编程技术网

Java 套接字服务器cleint

Java 套接字服务器cleint,java,sockets,jsf,Java,Sockets,Jsf,我有web应用程序JSF作为客户端,另一个java应用程序作为服务器。现在我有了一个startEngine()函数,它可以在服务器上启动应用程序,并且运行良好。我还有另一个叫做addWebSite的功能,它可以将一个网站添加到之前打开的同一个应用程序中。我对服务器的第一次调用有效,但第二次不行,我想在服务器上调用更多的函数 这是我的startEngine函数和addWebSite函数。注意:这是一个managedbean会话,但不会影响任何内容 public void startEgineNow

我有web应用程序JSF作为客户端,另一个java应用程序作为服务器。现在我有了一个startEngine()函数,它可以在服务器上启动应用程序,并且运行良好。我还有另一个叫做addWebSite的功能,它可以将一个网站添加到之前打开的同一个应用程序中。我对服务器的第一次调用有效,但第二次不行,我想在服务器上调用更多的函数

这是我的startEngine函数和addWebSite函数。注意:这是一个managedbean会话,但不会影响任何内容

public void startEgineNow() throws UnknownHostException, IOException {
        Session session = HibernateUtil.getSession();


    try {
        session.beginTransaction();
        // get student from database
        IPAddress myAddress = session.get(IPAddress.class, sendToSocketId);
        session.getTransaction().commit();

        if (myAddress.getIpAddress() != null) {
            clientSocket = new Socket(myAddress.getIpAddress(), myAddress.getPortNumber());


            PrintWriter out =
                    new PrintWriter(clientSocket.getOutputStream(), true);

                BufferedReader in =
                    new BufferedReader(
                        new InputStreamReader(clientSocket.getInputStream()));

                out.println("startEngine");
                out.flush();
                out.close();
            }
        } finally {
        if (session != null) {
            session.close();
        }

    }       
}

public void addWebsite() throws UnknownHostException, IOException{
    Session session = HibernateUtil.getSession();

    System.out.println(sendToSocketId);
        try {
            session.beginTransaction();
            // get student from database
            IPAddress myAddress = session.get(IPAddress.class, sendToSocketId);

             Sites sites = new Sites(addSite);
             sites.setAddress(myAddress);

             session.persist(sites);


             session.getTransaction().commit();


             if (myAddress.getIpAddress() != null) {
                    clientSocket = new Socket(myAddress.getIpAddress(), myAddress.getPortNumber());


                    PrintWriter out =
                            new PrintWriter(clientSocket.getOutputStream(), true);

                        BufferedReader in =
                            new BufferedReader(
                                new InputStreamReader(clientSocket.getInputStream()));

                        out.println("addWebSite");
                        out.flush();
                        out.close();
                }


            } finally {
            if (session != null) {
                session.close();
            }

            }       
}
这是我的服务器端代码

public static void main(String[] args) throws InterruptedException, NumberFormatException, IOException {

    MainListener myListener = new MainListener();

    ServerSocket serverSocket =
            new ServerSocket(5000);
        Socket clientSocket = serverSocket.accept();     
        PrintWriter out =
            new PrintWriter(clientSocket.getOutputStream(), true);                   
        BufferedReader in = new BufferedReader(
            new InputStreamReader(clientSocket.getInputStream()));

        String inputLine;
        while ((inputLine = in.readLine()) != null) {
            if (inputLine.equals("startEngine")) {
                myListener.runDesktop();

            }else if(inputLine.equals("addWebSite")){
                myListener.addWebsite("https://www.buzzfeed.com/");
            }
        }

当我用startEngine方法启动引擎时,我希望服务器对其他调用保持打开状态。只有当我从客户机发送close()函数时才关闭,请问我在这里做错了什么

您需要在一个循环中接受多个客户机,但我看不出这种客户机/服务器体系结构的意义,特别是因为您不知道如何实现它。您应该将服务器代码集成到webapp中,并通过方法调用直接调用它。所以我的问题是如何构建体系结构以接收其他请求。正如你所看到的,我已经回答了这个问题,我所看到的是,你正在着手一个不是最优的体系结构,你不知道如何实现。