Что подразумевается под концом потока, достигнутого в inputtream.read ()?

1

мой Android-смартфон - tcpclient, а модуль чипкита wf32 wifi - это мой tcp-сервер.

int bytesRead;
InputStream inputStream = socket.getInputStream();

while ((bytesRead = inputStream.read(buffer)) != -1){
       byteArrayOutputStream.write(buffer, 0, bytesRead);
       response += byteArrayOutputStream.toString("UTF-8");
     }

Вышеприведенный код считывает данные из потока и копирует в буфер. Если данные не поступают, он будет блокироваться. Но иногда я получаю -1. Может ли кто-нибудь объяснить причину получения -1? В документе упоминается "конец потока достигнут". Но можете ли вы объяснить смысл этого? Спасибо.

  • 2
    Это означает, что ваш поток больше не содержит оставшихся данных; Вы достигли конца потока.
  • 0
    что подразумевается под концом потока? Длина потока сокета равна длине данных, которые я отправляю с сервера. не так ли? если в потоке есть данные, он должен вернуть данные. если нет данных, он должен ждать получения данных? Вот как кончается поток на картинке?
Показать ещё 5 комментариев
Теги:
sockets

1 ответ

2

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

NB

response += byteArrayOutputStream.toString("UTF-8");

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

  • 0
    В моем случае одноранговый узел - это модуль wifi, который является tcpserver. так вы говорите, что tcpserver закрывает соединение?
  • 0
    Нет, не говори мне, что я сказал. Я сказал, что пэр закрыл соединение. Если вы клиент, то партнер - это сервер. Если вы сервер, то это клиент.
Показать ещё 6 комментариев

Ещё вопросы

Сообщество Overcoder
Наверх
Меню