Java Socket не вызывает исключений при отключении сервера - PullRequest
0 голосов
/ 05 ноября 2018

Может ли кто-нибудь оказать мне некоторую поддержку в этом: у меня есть следующие классы сокетов клиента и сервера:

public class Client {
    public static void main(String[] args) {
        String servername = "localhost";
        int port = 21000;
        Socket sc = null;
        boolean test = true;

        while(test) {
            try {
                sc = new Socket(servername, port);
                PrintWriter out = new PrintWriter(sc.getOutputStream(), true);
                for(int i = 0; i < 100 ; i++) {
                    out.println("number " + i + " transmitted !");
                    System.out.println("number " + i + " transmitted !");
                    try {
                        Thread.sleep(1000);
                    } catch (InterruptedException e) {
                        e.printStackTrace();
                    }
                }
                test = false;
            } catch (IOException e1) {
                e1.printStackTrace();
                try {
                    sc.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
                continue;
            }
        }
    }
}


public class Server {
    public static void main(String[] args) {
        int port = 21000;

        try(ServerSocket serverSocket = new ServerSocket(port);
            Socket sc = serverSocket.accept();
            BufferedReader in = new BufferedReader(new InputStreamReader(sc.getInputStream())); ) {             
            String inputLine;               
            while((inputLine = in.readLine()) != null) {
                System.out.println("Received message : " + inputLine + " from " + sc.toString());   
            }
        } catch(IOException e) {
            System.out.println("Error : " + e.getMessage());
        }
    }
}

Когда я запускаю сервер, а затем клиента, я вижу, что он работает нормально, но когда я жестоко останавливаю сервер до конца счетчика на стороне клиента, я не вижу никаких исключений на стороне клиента, и это продолжается например, если сервер все еще там. Я хотел бы поднять исключение, когда сервера больше нет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...