При получении данных с сервера они отображаются / принимаются после закрытия сокета.Как получить его сразу после отправки с сервера.? - PullRequest
0 голосов
/ 01 апреля 2019

Я отправляю данные с сервера клиенту, но клиент получает их только во время отключения. Но мне это нужно, как только сервер отправляет. Я не знаю, почему он отправляет данные поздно после закрытия сокета.

public void run() {
                try {
                    socket = new Socket(eHostIp.getText().toString(), Integer.parseInt( eHostPort.getText().toString() ) );


                    BufferedReader in = new BufferedReader( new InputStreamReader( socket.getInputStream() ), 1024 );
                    eReceiveData.setText( "Server Connected... XXXXXXX" );
                    String line;
                    while ((line = in.readLine()) != null) {
                        Log.d("read line",line);
                        eReceiveData.setText( line );
                        socket.setSoTimeout( 1000 );
                       //socket.close();
                    }

                    socket.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        } );
        thread.start();
    }

Ответы [ 2 ]

0 голосов
/ 01 апреля 2019

Это спасло мой день ... Чтение строки как символа (line + = (char) in.read ())

                String line = " ";
                while ((line += (char)in.read()) != null) {
                    Log.i( "read line", line );
                    eReceiveData.setText( line );

                }

Спасибо.

0 голосов
/ 01 апреля 2019

Убедитесь, что ваш сервер отправляет символ EOL в конце каждого сообщения, чтобы ваш BufferedReader мог правильно использовать метод readline ().

В качестве альтернативы вы можете попробовать принудительно вызвать flush () после каждого сообщения.

...