我正在尝试编写一个非阻塞客户端/服务器,我已经注意到Socket提供了getInputStream()
和getOutputStream()
,但SocketChannel提供了read()
和{ {1}}。
以下问题都是相关的,是为了更好地了解情况:
答案 0 :(得分:1)
为什么这些对象在提供分组数据方面有所不同?
因为否则他们会是一样的。 NIO的设计者认为他们必须将数据,位置,容量和限制封装到一个类中。
这是阻塞与非阻塞的副作用还是仅仅是实现上的差异?
不,是的。
在决定如何从套接字读取时,我需要考虑这个问题吗?
当然。
我是否可以收到一个不完整的数据包,其中缓冲区在任一实现中的结束时间早于预期?
是。这是TCP / IP的属性,而不是Java的属性。