Остановка многопоточного сервера

 
 
 
Сообщения:3
Не могу остановить многопоточный сервер:
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintStream;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.ArrayList;

public class Server {

    public static void main(String args[]) throws IOException{
        ServerSocket server = null;
        Socket client = null;
        server = new ServerSocket(3456);
        System.out.println("Сервер ожидает подключения");
        try {
            while (true) {
                client = server.accept();
                new ThreadEchoHandler(client);
            }
        }
        finally {
            server.close();
        }
    }
}


class ThreadEchoHandler extends Thread {

    private Socket client = null;
    String newMessage = new String("New");
    String endMessage = new String("End");
    String endConnection = new String("stop");
    BufferedReader inputLine;
    PrintStream out;

    public ThreadEchoHandler(Socket socket)
    {
        client = socket;
        start();
    }

    public void run()
    {
        try {
            //Входной поток сервера
            inputLine = new BufferedReader(new InputStreamReader(client.getInputStream()));
            //Выходной поток сервера
            out = new PrintStream(client.getOutputStream());
            BufferedReader bRead = new BufferedReader(new InputStreamReader(System.in));
            boolean flag = false;
            boolean flagEnd = false;
            ArrayList<String> clientmessages = new ArrayList<>();

            while (flagEnd != true)
            {
                    try {
                        String checkConnection = inputLine.readLine();
                        if (checkConnection.equals(endConnection)) {
                            flagEnd = true;
                            break;
                        } else {
                            System.out.println("Получено от клиента 1:"+checkConnection);
                            String clientmessage = new String();
                            while (clientmessages.size() != 5) {
                                clientmessage = inputLine.readLine();
                                System.out.println("Получено от клиента 2:"+clientmessage);
                                clientmessages.add(clientmessage);
                            }
                        }
                        //Производим вычиления
                        double number1 = new Double(Double.parseDouble(clientmessages.get(0)));
                        double number2 = new Double(Double.parseDouble(clientmessages.get(3)));
                        int action = new Integer(Integer.parseInt(clientmessages.get(1)));
                        double result = new Double("0");

                        switch (action) {
                            case 1: {
                                result = number1 + number2;
                            }
                            break;
                            case 2: {
                                result = number1 - number2;
                            }
                            break;
                            case 3: {
                                result = number1 * number2;
                            }
                            break;
                            case 4: {
                                result = number1 / number2;
                            }
                            break;
                        }
                        clientmessages.clear();
                        //Отправка сообщения клиенту
                        String sentMessage = new String();
                        sentMessage = Double.toString(result);
                        System.out.println("Отправлено клиенту:"+sentMessage);
                        //Отправляем сообщение
                        out.println(sentMessage);
                    } catch (IOException ex) {
                        ex.printStackTrace();
                    }
                }
        }
        catch (IOException ex)
        {
            ex.printStackTrace();
        }
        System.out.println("Disconnect");
        this.disconnect();
    }

    public void disconnect() {
        try{
            this.inputLine.close();
            this.out.close();
            this.client.close();
        }
        catch (IOException ex)
        {
            ex.printStackTrace();
        }
    }
}


Как завершить программу?
 
Модераторы:Нет
Сейчас эту тему просматривают:Нет