加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

Java InputStream.read(byte [],int,int)方法,如何阻塞,直到读取

发布时间:2020-12-14 16:21:42 所属栏目:Java 来源:网络整理
导读:我正在编写一个简单的客户端/服务器网络应用程序,通过TCP套接字发送和接收固定大小的消息. 到目前为止,我一直在使用Socket类的getInputStream()和getOutputStream()方法来获取流,然后调用InputStream类的read(byte [] b,int off,int len)方法来读取60每个字
我正在编写一个简单的客户端/服务器网络应用程序,通过TCP套接字发送和接收固定大小的消息.

到目前为止,我一直在使用Socket类的getInputStream()和getOutputStream()方法来获取流,然后调用InputStream类的read(byte [] b,int off,int len)方法来读取60每个字节(这是消息的大小).

后来我读了这个方法的Javadoc:

public int read(byte[] b,
int off,
int len)
throws IOException

Reads up to len bytes of data from the input stream into an array of
bytes. An attempt is made to read as many as len bytes,but a smaller
number may be read
. The number of bytes actually read is returned as
an integer.

我想知道是否有任何Java“开箱即用”解决方案阻止,直到len字节被读取,如果需要永远等待.

我可以明显地创建一个简单的循环,但我觉得我正在重塑轮子.你可以建议我一个干净的Java感知解决方案吗?

解决方法

使用DataInputStream.readFully.这是 JavaDoc
InputStream in = ...
DataInputStream dis = new DataInputStream( in );
byte[] array = ...

dis.readFully( array );

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读