Я реализую ориентированный на события слой поверх сокетов Java, и мне было интересно, есть ли способ определить, есть ли данные, ожидающие чтения.
Мой обычный подход - читать из сокета в буфер и вызывать предоставленные обратные вызовы, когда буфер заполняется на заданное количество байтов (которое может быть 0, если обратный вызов должен запускаться каждый раз, когда что-то прибывает), но я подозреваю, что Java уже выполняет буферизацию за меня.
Надежен ли для этого метод available ()
InputStream? Должен ли я просто read ()
и сделать свою буферизацию поверх Socket? Или есть другой способ?