Java InputStream.read(byte [],int,int)方法,如何阻塞,直到读取了确切的字节数

我正在编写一个简单的客户端/服务器网络应用程序,通过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 );

相关文章

最近看了一下学习资料,感觉进制转换其实还是挺有意思的,尤...
/*HashSet 基本操作 * --set:元素是无序的,存入和取出顺序不...
/*list 基本操作 * * List a=new List(); * 增 * a.add(inde...
/* * 内部类 * */ 1 class OutClass{ 2 //定义外部类的成员变...
集合的操作Iterator、Collection、Set和HashSet关系Iterator...
接口中常量的修饰关键字:public,static,final(常量)函数...