当前位置:  技术问答>java相关

socket.getInputStream().read(byteArray,position,lengh)是如何工作的???

    来源: 互联网  发布时间:2015-08-23

    本文导语:  应该是堵塞的方法 就是说如果没读到指定长度的数据会继续等待读取 可为什么有时候小于指定读取程度它就完成了呢 比如我指定2000,它读到1500就结束,没有报错 我继续读也可以把后500读出来 请专家指点内部机制...

应该是堵塞的方法
就是说如果没读到指定长度的数据会继续等待读取
可为什么有时候小于指定读取程度它就完成了呢
比如我指定2000,它读到1500就结束,没有报错
我继续读也可以把后500读出来
请专家指点内部机制问题 一般摸棱两可的答案就免了

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

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

    
 
 
 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • java命名空间java.net类socket的类成员方法: socket定义及介绍
  • re socket编程中 ACCEPT返回的socket与原socket(他参数中的)端口号一样吗?
  • java命名空间java.nio.channels类socketchannel的类成员方法: socket定义及介绍
  • libevent2需要从socket读一段数据写入一个socket中,同时发送给另一个socket
  • java命名空间java.nio.channels类serversocketchannel的类成员方法: socket定义及介绍
  • socket 通讯开发包 Simple Sockets
  • java命名空间java.nio.channels类datagramchannel的类成员方法: socket定义及介绍
  • C++ Socket 库 C++ Sockets
  • java命名空间java.net类socket的类成员方法: getsendbuffersize定义及介绍
  • vc做的的socket应用和unix下socket?
  • java命名空间java.net类socket的类成员方法: getreceivebuffersize定义及介绍
  • QSocketDevice ( int socket, Type type )中那个 int socket 是哪里来得?
  • java命名空间java.net类socket的类成员方法: gettrafficclass定义及介绍
  • socket编程 通过man socket, 没有找到socket函数的第一参数该填什么 怎样利用man手册
  • java命名空间java.net类socket的类成员方法: getport定义及介绍
  • 线程间可否通过管道传递SOCKET句柄?还有其他方式传递SOCKET么?
  • java命名空间java.net类socket的类成员方法: getlocalport定义及介绍
  • [FreeBSD] 大神,求解,control socket : can‘t to any socket
  • java命名空间java.net类socket的类成员方法: getinetaddress定义及介绍
  • 两个 Socket 互相通信,其中一个如何判断另一个 Socket 是否已经意外断开了连接?
  • java命名空间java.net类socket的类成员方法: isconnected定义及介绍
  • 大家帮忙推荐一本linux socket编程的入门书,我刚接触socket,谢谢!!


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3