客户端将一个1000的数据发到服务端,服务端的缓存只定义了100,这样就多次readtable事件,没法全部读出来,高人指点一下。

解决方案 »

  1.   

    我们的应用是用NIO读未知长度的数据,基本上就是有某种协议,要么头4个字节表示长度,要么有个结束字符,要么有个开始标记,要么连接断开,要么固定长度,总之,NIO读取的时候不能假设一次读取多少。
    实测的时候,有时候一包读到几K的,有时候一包读到100多个,也有时候几个字节。 所以接受这边还要保留一个缓存,它的最小长度也要能够保证你能读到协议约定的某个数据,它里面的数据还没有满足定界所需的长度时,就不处理它。