Бесконечное время при чтении данных из потока данных

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

Отправка файла из кода сервера ниже

  byte buf[] = new byte[1024];
    int len;
    try {
        while ((len = inputStream.read(buf)) != -1) {
            out.write(buf, 0, len);
        }

        out.flush();
  //            out.close();
        inputStream.close();
    } catch (IOException e) {
        Log.d(TAG, e.toString());
        return false;
    }

данные чтения кода на стороне клиента

byte buf[] = new byte[1024];
    int len;
    try {
        Log.e(TAG, "Size of image on client side" + inputStream.readInt());
        while ((len = inputStream.read(buf)) != -1) {
            Log.e(TAG, buf + "");
            out.write(buf, 0, len);
        }
    } catch (IOException e) {
        Log.d(TAG, e.toString());
        return false;
    }

Поэтому я должен использовать любой разделитель, чтобы остановить цикл while, потому что я понял, что если я не закрою outtream от сервера, то время пока не встретится с условием -1 .

Так что любая помощь будет оценена.

0 ответов

Другие вопросы по тегам