Сеть Java: Socket / InputStream с обработкой событий

Я реализую ориентированный на события слой поверх сокетов Java, и мне было интересно, есть ли способ определить, есть ли данные, ожидающие чтения.

Мой обычный подход - читать из сокета в буфер и вызывать предоставленные обратные вызовы, когда буфер заполняется на заданное количество байтов (которое может быть 0, если обратный вызов должен запускаться каждый раз, когда что-то прибывает), но я подозреваю, что Java уже выполняет буферизацию за меня.

Надежен ли для этого метод available () InputStream? Должен ли я просто read () и сделать свою буферизацию поверх Socket? Или есть другой способ?

6
задан cHao 12 May 2011 в 02:46
поделиться