让我们说我通过NIO SocketChannel
连接客户端,这将发送表格的请求
<command>\r\n
可能会或可能不会跟着
<value>\r\n
取决于命令。如果是,<command>
将包含之后发送的<value>
的大小(以字节为单位)。
现在我对这个NIO的新东西很新,但是我很需要首先阅读<command>
来准备一个缓冲区来接收<value>
。我怎么做呢?
对于<command>
可以有不同的长度,虽然我知道最大长度,但我怀疑如果我弄错了(例如,当命令较短时读取最大长度)我将最终阅读其中一些{ {1}}进入我用来接收<value>
的同一个缓冲区。
有没有办法在<command>
处删除阅读?
(我应该提到我不允许使用任何外部库。)
修改
我的最新尝试,
\r\n
结果(有些不足为奇)在private void read(SelectionKey k) throws IOException{
SocketChannel client = (SocketChannel)k.channel();
buffer.clear();
BufferedReader is = new BufferedReader(new InputStreamReader(client.socket().getInputStream()));
System.out.println(is.readLine());
}
。