Android: Telnet использует Socket - отсутствует последняя строка - PullRequest
0 голосов
/ 26 сентября 2011

Я пытаюсь написать MUD Client для Android и столкнулся с проблемой вывода с сервера.Я не могу заставить мое приложение показывать последнюю строку (запрос на вход в систему) в консоли ..

try {
        Socket socket = new Socket("studnia.mud.pl", 4004);
        OutputStream out = socket.getOutputStream();
        PrintWriter output = new PrintWriter(out);
        output.println("Siema, pisze klient mudowy pod androida wiec nie bijcie że testuje na studni. :(");

        BufferedReader input = new BufferedReader(new InputStreamReader(socket.getInputStream()));
        String line="1";
        while(line!=null){
            line = input.readLine();
            Log.i("Socket", line);
        }
        socket.close();
    } catch (UnknownHostException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }

1 Ответ

0 голосов
/ 24 февраля 2014

readLine() не возвращает строку запроса на вход в систему, поскольку эта строка еще не завершена - до ввода имени входа символ завершения строки отсутствует.Чтобы получить частичную строку с приглашением, вы не можете использовать readLine();попробуйте что-то вроде while (input.ready()) { int c = input.read(); ... } или input.read(cbuf, 0, len).

...