Когда я закрываю сокет соединения, клиент продолжает работать? - PullRequest
0 голосов
/ 21 октября 2019

Я новичок в JAVA Sockets, я просто хочу создать приложение, которое получает строковое значение. Я думаю, сервер работает нормально. Он отправляет данные 5 раз отдельно и останавливается. Но клиент получает сообщения сервера не отдельно, а тем более, когда сервер останавливает клиента DONT, клиент не останавливается и все еще принимает сообщения (NULL)

SERVER

static BufferedReader in; 
    static BufferedWriter out; 
    static Socket clientSocket;

    public static void main(String[] args)  {
        try {
            clientSocket = new Socket("192.168.0.106", 13130);

            in = new BufferedReader(new InputStreamReader(clientSocket.getInputStream()));
            out = new BufferedWriter(new OutputStreamWriter(clientSocket.getOutputStream()));
            int i = 0;
            while (!clientSocket.isClosed()) {
                System.out.println("Times: " + i++);
                String cmd = in.readLine();
                System.out.println(cmd);
            }
            clientSocket.close();
        }catch (Exception e){
            e.printStackTrace();

        }

И сервер

void Write() throws Exception{
        ServerSocket serverSocket;
        serverSocket = new ServerSocket(13130);

        Socket clientSocket;
        System.out.println("Listening...");
        clientSocket = serverSocket.accept();

        BufferedReader in = new BufferedReader(new InputStreamReader(clientSocket.getInputStream()));
        // и отправлять
        BufferedWriter out = new BufferedWriter(new OutputStreamWriter(clientSocket.getOutputStream()));

        Thread.sleep(10000);
        for (int i = 0; i < 5; i++) {

            System.out.println("Times: " + i);
            out.write("Hello " + i);
            out.flush();

        }
        clientSocket.close();
        serverSocket.close();
    }

Итак, я ожидал, что клиент прочитает данные 5 раз и остановится. Но я получил следующий вывод:

Times: 0
Hello 0Hello 1Hello 2Hello 3Hello 4
Times: 1
null
Times: 2
null
Times: 3
null
Times: 4
null
Times: 5
null
Times: 6
null
AND SO ON...

Может быть, проблема: сервер отправляет сообщения слишком быстро?

...