java socket InputStream 笔记

这是工作中遇到的时候在网上找的答案,经过自己测试符合自己想要的答案,在此做个记录,方便以后查看。

本笔记是关于在开启socket服务时的输入输出流的read()方法的正确使用。

在写网络应用中会经常这样写 :

while ((len = inStream.read(buffer)) != -1) { 
但这样往往容易发生错误或死在循环里。

解决办法:

/** 
 * @功能 读取流 
 * @param inStream 
 * @return 字节数组 
 * @throws Exception 
 */  
public static byte[] readStream(InputStream inStream) throws Exception {  
    int count = 0;  
    while (count == 0) {  
        count = inStream.available();  
    }  
    byte[] b = new byte[count];  
    inStream.read(b);  
    return b;  
}
还有一种读取指定长度字节的方法:
int count = 100;  
byte[] b = new byte[count];  
int readCount = 0; // 已经成功读取的字节的个数  
while (readCount < count) {  
    readCount += inStream.read(b, readCount, count - readCount);  
}
记录结束,收工。
原文出自:点击打开链接  

 
  

你可能感兴趣的:(java socket InputStream 笔记)