сервер / клиент итеративный сервер - PullRequest
1 голос
/ 27 июня 2019

Как я могу сделать сервер итеративным? в моей книге я рекомендую вставить accept () и ответ клиенту через некоторое время (true). как я могу решить это? Моя книга мне не помогла.

Это класс сервера:

public class ServerHelloWorld { 
    static Logger logger = Logger.getLogger("global");

    public static void main(String[] args) {
         try {
             ServerSocket serverSocket = new ServerSocket (9000); 
             logger.info("Socket istanziato, accetto connessioni,..");
             Socket socket = serverSocket.accept();
             logger.info("Accettata una connessione... attendo comandi.");
             ObjectOutputStream outStream = new ObjectOutputStream (socket.getOutputStream());

             ObjectInputStream inStream = new ObjectInputStream (socket.getInputStream());
             String nome = (String) inStream.readObject();

             logger.info("Ricevuto:" + nome);

             outStream.writeObject("Hello "+ nome);

             socket .close();

         } catch (EOFException e) { 
             logger.severe("Problemi con la connessione:" + e.getMessage());
             e.printStackTrace();
         } catch (Throwable t) { 
             logger.severe("“Lanciata Throwable:" + t.getMessage());
             t.printStackTrace();
         }
    }
}

А это клиентский класс:

public class ClientHelloWorld {
    static Logger logger = Logger.getLogger("global");

    public static void main(String args[]) {
        try {
            Socket socket = new Socket ("localhost", 9000);
            ObjectOutputStream out = new ObjectOutputStream(socket.getOutputStream());
            ObjectInputStream in = new ObjectInputStream(socket.getInputStream());

            out.writeObject("Giovanni"); 
            System.out.println(in.readObject());
            socket .close();

        } catch (EOFException e) { 
            logger.severe("Problemi con la connessione:" + e.getMessage());
            e.printStackTrace();
        } catch (Throwable t) {
            logger.severe("Lanciata Throwable:" + t.getMessage());
            t.printStackTrace();
        }
    }
}

Кто-нибудь может мне помочь?

1 Ответ

0 голосов
/ 27 июня 2019

Вам просто нужно зациклить часть кода, где вы принимаете клиента, и читать / писать сообщение.while(true) позволяет вам зацикливаться бесконечно, или пока не будет использован оператор управления, такой как break или return, или не будет выдано исключение

try {
    ServerSocket serverSocket = new ServerSocket (9000); 
    logger.info("Socket istanziato, accetto connessioni,..");
    while(true) {
        Socket socket = serverSocket.accept();
        logger.info("Accettata una connessione... attendo comandi.");
        ObjectOutputStream outStream = new ObjectOutputStream (socket.getOutputStream());

        ObjectInputStream inStream = new ObjectInputStream (socket.getInputStream());
        String nome = (String) inStream.readObject();

        logger.info("Ricevuto:" + nome);

        outStream.writeObject("Hello "+ nome);

        socket .close();
    }
} catch (EOFException e) { 
    logger.severe("Problemi con la connessione:" + e.getMessage());
    e.printStackTrace();
} catch (Throwable t) { 
    logger.severe("“Lanciata Throwable:" + t.getMessage());
    t.printStackTrace();
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...