这就是我的意思:
put 512 bytes
SocketChannel#write(this data)
start at the beginning and put 512 bytes again
rinse & repeat
我仍在尝试掌握ByteBuffers,我尝试使用ByteBuffer#reset()
,但我总是得到一个InvalidMarkException,即使这似乎是正确的解决方案(除非我错了,我不会惊讶!)
谢谢!
编辑:具体来说,我正在尝试实现同样的效果,除了我想以512字节块而不是批量发送它。 http://privatepaste.com/1fb0e6df07
答案 0 :(得分:5)
不,reset()
不是正确的方法。它用于“回滚”流或缓冲区,并非所有它都支持它(在大多数情况下它并不是非常有用)。来自javadoc:
将此缓冲区的位置重置为先前标记的位置。
您可以使用clear()
方法完全清除缓冲区(即将位置设置为零并开始在其中写入更多数据)。