Я пишу простое сетевое приложение клиент / сервер, которое отправляет и принимает сообщения фиксированного размера через сокет TCP.
До сих пор я использовал методы getInputStream ()
и getOutputStream ()
класса Socket
, чтобы получить потоки, а затем вызвать read (byte [] b, int off, int len)
класса InputStream
для чтения 60 байт каждый раз (что является размером сообщения).
Позже я прочтите Javadoc для этого метода:
public int read (byte [] b, int off, int len) выбрасывает IOException
Считывает до len байтов данных из входного потока в массив байты. Предпринята попытка прочитать до len байтов , но меньшего размера. номер можно прочитать . Фактически прочитанное количество байтов возвращается как целое число.
Мне было интересно, есть ли какое-нибудь "готовое" решение Java для блокировки до тех пор, пока не будут прочитаны len байтов, ожидая вечно, если необходимо.
Я, очевидно, могу создать простой цикл, но я чувствую, что изобретаю велосипед заново. Можете ли вы предложить мне чистое решение с поддержкой Java?