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