Начало конца Inputstream в Java - PullRequest
3 голосов
/ 11 февраля 2012

следующий мой код на стороне клиента, который получает текст с сервера и печатает.

Socket socket = new Socket(ip, port);
        InputStream in = socket.getInputStream();
        OutputStream out = socket.getOutputStream();
        String string = "Hello!\n";
        byte buffer[] = string.getBytes();
        out.write(buffer);


    while ((character = in.read()) != -1){
            System.out.print((char) character);
        }

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

1 Ответ

5 голосов
/ 11 февраля 2012

-1 обозначает конец потока и принимается, когда соединение закрыто.Если вы хотите, чтобы соединение было открытым и отправлять несколько сообщений, вам нужен своего рода протокол (вроде соглашения между обоими сторонами), который сообщает, где заканчивается сообщение.Есть много способов сделать это, но в вашем примере вы пишете терминатор строки (\n) в конец сообщения, чтобы вы могли проверить это на другом конце.Другой способ - записать количество байтов, которые вы собираетесь отправить, до фактического содержимого сообщения.

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