这是一个类似于读者/写者的机制,Java Socket中有输入缓冲和输出缓冲,当输入缓冲为空时,调用read会阻塞当前线程,如果不为空,就把缓冲中的数据读出来,然后清空缓冲区。

解决方案 »

  1.   

    socket接收端收到数据后(2000个字节长),并不是等待你去网络上读取,只要你连接读取一次,一次性发送的数据已经在接收端的缓存中存有数据。如果第一次读取1500个字节,这时候另外的500个字节已经存在于缓存中,所有你第二次读取500个字节的时候能够读到。你可以读505个字节后果会是怎么样?
      

  2.   

    farawayzheng_necas(遥远) 
    你说的对 我只到怎么回事情了 谢谢