发的包可通过前面的4个字节确定这个包是不是需要处理,如果不需要则将接收缓冲区中这个包后面
的数据清除掉.请问如何清除??如果在清除之前又有数据来到,会不会一起清除掉??如果一起清除了肯定是不行的,如何解决呢??每次发来的包的大小都是不确定的.

解决方案 »

  1.   

    我给每个包都加了一个头标识包的大小和标志.数据来时只是将这个包移动到另一个缓冲区堆中了,其它的线程处理每个包.这样虽多了一次数据的移动,但程序的结构性更好了.好象网络编程中有I/O直接映射,数据直接可以放到我的缓冲区堆中,没有用过. 如果能实现的话就可以少一个移动了.还有个问题,ReceiveBuf 是每一个包来了都触发,还是数据在缓冲区中达到一定量才触发.如果接收缓冲区的大小为10,发送大小为4的包3个,有没有可能出现第三包让截断的情况?
      

  2.   

    >>.数据来时只是将这个包移动到另一个缓冲区堆中了
    我觉得只能这样处理, 你无法不接收数据, 只能不处理;
    这样, 你在另外一个缓冲区处理,丢弃,都没问题>>ReceiveBuf 是每一个包来了都触发,还是数据在缓冲区中达到一定量才触发.
    跟很多条件有关>>有没有可能出现第三包让截断的情况?
    不大肯定