java nio客户端问题
我编写了一个java nio服务器和客户端,在客户端连到服务器的时候,服务器直接给客户端发送两个报文
客户端处理代码如下:
while(running) {
selector.select();
Iterator <SelectionKey> keys =selector.selectedKeys().iterator();
while(keys.hasNext())
{
SelectionKey key = keys.next();
int bytesRead=0;
if(key.isReadable()){
bytesRead =((SocketChannel) key.channel()).read(readBuffer);
}
if (bytesRead > 0) {
执行操作
}
selector.selectedKeys().remove(key);
}
}
问题是为什么 我只能收到一个报文呀
------解决方案--------------------需要清除BUFFER。
selector.selectedKeys().remove(key);
buffer.clear()
------解决方案--------------------发送数据缓存区和接收数据缓存区都要clear()和flip()。
------解决方案--------------------debug看readBuffer的内容是如何变化的就行了。
------解决方案--------------------DEBUG 一下