我用socket 从一个网站 上读取网页内容socket 的inputStream
流用BufferedInputStream 去装饰inputStream 
一次读取一行数据这里面的原理是什么我读取完一行后,它是从缓存里再读取一行还是会到网站是去再取一行数据回来(也是是从网卡里缓存里读取)如果是一行读取一行,效率会很差
但如果是用网卡缓存,读完卡网里的数据,再去访问网站取数据,它怎么知道从什么位置开始取(我指得是从前网页里的第几行开始取,难道还带个第几行标识参数去吗)我想知道 这一系列交互的大概过程是怎么样的

解决方案 »

  1.   

    我关键问的是:socket InputSteream 
    如果用BufferedInputSteream  装饰inputStream 肯定先从Buffered会缓存数据
    但如果BufferedInputStream 里缓存里也没数据,这时数据从哪取
    操作系统 里的缓存,还是从网页去取数据如果是去网页那取数据,怎么知道从取第几行的数据 不知道我说明白了没 
      

  2.   

    那比如说我现在用socket 访问www.sina.com
    并取对应 的InputStream 
    我用BufferedInputStream装饰inputStream 
    我一行一行读取数据,但如果碰Buffered里的缓存数据读完了,这时从哪获取到数据
    如果从操作系统 里的缓存,假设操作系统 里的缓存也读完
    这时是不是应该去www.sina.com再读取数据 ,如果是
    从www.sina.com里读取,怎么知道 从第几行开始读取数据,
      

  3.   

    readLine时,读完了缓存,会阻塞到读到换行或者结尾才返回。
      

  4.   

    我知道 会阻塞,但阻塞时,应该是操作系统 在从www.sina.com上获取数据吗
    这是操作系统怎么知道 从几行开始获取
      

  5.   


    不明白你到底是什么意思,你从一个网站读取数据的话,利用inputStream 往BufferedInputStream存入数据  这个应该是读取完你想要的数据。 不知道你说的 “但如果碰Buffered里的缓存数据读完了,这时从哪获取到数据, 如果从操作系统 里的缓存,假设操作系统 里的缓存也读完” ,这个是什么意思。
      

  6.   

    要了解清楚你的问题,还是去看看TCP/IP协议吧
    好像传输时是以数据包的形式发送的,系统收到一个包,就cache起来,等你read,用readLine,就会一直读到下一个换行符,如果当前包没有,就继续找网站要下一个包,循环