Я пытаюсь написать программу на Java для Windows, которая предполагает связь с серверной программой, расположенной на чужой машине. Моя программа успешно подключается к серверу, успешно записывает на него байтовый массив и ожидает ответа.
Я знаю, что сервер печатает байты (ответ) обратно мне по одному байту за раз.Я пытался использовать объект DataInputStream с различными методами (read, readByte и т. Д.), Я пытался использовать объект BufferedReader с его методами (read, readLine и т. Д.), Но все объекты чтения и различные методы, которые я использовалвсе сталкиваются с одной и той же проблемой.
Байты успешно читаются (каждый раз, когда читается байт или байты, я могу распечатать их на консоли, и они будут такими, какими я их ожидал).Проблема в том, что мой читатель не знает, когда прекратить чтение.Даже если сервер отправил все свои байты, функция чтения с моей стороны бесконечно ждет большего количества данных, и поэтому программа зависает при функции чтения.
Эта проблема, похоже, влияет на все методы, которые у меня есть.пытался.Я проводил тесты с простой клиентской программой и серверной программой, каждая длиной около 40 или 50 строк, где клиент подключается к серверу и отправляет на него несколько байтов.Все методы, которые я пытался использовать для чтения с сервера, приводят к той же проблеме, о которой говорилось выше (сервер зависает в ожидании большего ввода от клиента, даже если он отправил все свои данные).
Я действительно отчаянно нуждаюсь в помощи по этому вопросу.Очень важно, чтобы я закончил эту программу в ближайшее время, и она в основном завершена, за исключением этой проблемы со связью.Любая помощь высоко ценится!
-Rob
- EDIT -
В конце я остановился на алгоритме, который прекращает чтение байтов, отслеживая количество сегментов сообщений, которыебыли прочитаны (сегменты разделены двумя нулевыми значениями: 00) и сравниваются с числом ожидаемых сегментов (переданных функции чтения в качестве аргумента).Это не идеальный метод, но он работает, и у меня больше нет времени работать над программой.
Спасибо за помощь всем!