Я экспериментирую с написанием неблокирующего клиента/сервера, о котором я заметил, что Socket обеспечивает getInputStream()
и getOutputStream()
, но SocketChannel предоставляет read()
и write()
.Почему Socket использует потоки, но NIO SocketChannel использует чтение/запись?
Следующие вопросы все связаны между собой и это усилие, чтобы лучше понять ситуацию:
- Почему эти объекты различаются в том, как при условии, что пакет данных?
- Является ли это побочным эффектом блокировки против неблокирующего или просто отличного в реализации?
- Это что-то, что мне нужно учитывать при принятии решения о том, как читать из сокета?
- Могу ли я получить неполный пакет, где буфер заканчивается раньше, чем ожидалось в реализации?
Нет такой вещи, как «NIO Socket». – EJP