Java - InputStream - тест для ввода - PullRequest
0 голосов
/ 28 мая 2011

Я отправляю данные на сервер в два этапа: 1) Длина того, что я отправлю, используя байт [4] 2) Данные.

Сервер прослушивает точную длину данных (отправленных первыми)) и затем отвечает.

Поэтому я слушаю InputStream и пытаюсь получить данные.

Моя проблема: Что бы я ни делал, я получаю только поток, который яотправить, но сервер определенно отправляет новую строку.

Кажется, я не могу ждать -1 (конец строки), так как программа истекает, и я уверен, что сервер не отправляет ничего подобного.

Поэтому я использую inputStream.available (), чтобы узнать, сколько байтов осталось в буфере.

Когда я отправляю inputStream.read () после прочтения всех данных, будет время«Сетевой тайм-аут простоя».

Но мне нужно прослушать inputStream, чтобы убедиться, что я не пропускаю информацию.

Почему я получаю только отправленную информацию, а не то, чтоотправить сервером?Как я могу прослушать соединение для поступления новых предметов?

Вот мой код:

    private void sendData (byte[] sendBytes){
        try {
            os.write(sendBytes);
            os.flush();
        } catch (IOException ex) {
        }
    }

Пожалуйста, помогите THD

1 Ответ

1 голос
/ 28 мая 2011

Так вы обычно читаете все данные из считывателя (пока не закроется другой конец):

//BufferedReader is 
StringBuilder data = new StringBuilder();
char[] buffer = new char[1024 * 32];
int len = 0;
while ((len = is.read(buffer)) != -1) {
    data.append(buffer, 0, len);
}

//data will on this line contain all code received from the server

...