日期:2014-05-20  浏览次数:20669 次

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 一下