Я разрабатываю приложение для связи со сторонним приложением через сокет.По сути, мое приложение должно отправить некоторые запросы на сервер, а сервер возвращает некоторые данные.Когда сервер отправляет мне небольшое количество данных, все работает хорошо.Но когда я запрашиваю большие объемы данных с сервера, мое приложение иногда не получает полные данные, и это происходит с перерывами.
Я провел некоторое исследование в Интернете и следовал примерам программирования сокетов, которые нашел, но все ещеЯ не мог решить проблему.Ниже моя текущая реализация.
BufferedInputStream is = new BufferedInputStream(socket.getInputStream());
//I know the size of data that I am expecting from the server
byte[] buffer = new byte[length];
int count = 0;
int current = 0;
while(count < length) {
current = is.read(buffer, count, length - count);
if(current == -1) {
break;
} else {
count += current;
}
}
Я знаю размер данных, которые я ожидаю от сервера.Когда возникает проблема, метод read () возвращает -1, прежде чем данные будут полностью получены с сервера.У меня нет доступа к реализации на стороне сервера.Пожалуйста, сообщите мне, если я что-то упустил в своем коде или есть ли лучший способ сделать это.