java 网络读取,多次read,demo

public byte[] doConnNetWork(byte[] outputBytes) throws IOException {
		byte[] result = null; 
		Socket connection = null;
		OutputStream   outputStream = null;
		InputStream    inputStream = null; 
		int c = 0;
		boolean isGo = true; // 是否继续
		// 只讲重点的,其他的忽略掉了
		    connection =  openConnection(); 
		    inputStream = this.openConnectionInputStream(connection); 
		    outputStream = this.openConnectionOutputStream(connection); 
			 //***  从服务器端接受数据  ***//  
		while (c < 3 && isGo) { 
//--------------------------------------------- 读取数据核心代码 start ----------------------------------
			int hLen = 18;
			byte[] header = new byte[hLen];
			inputStream.read(header, 0, hLen);
			// 读取包头
			ResponseHeader rheader = DataPackage.getResponseHeader(header);
			int len = rheader.getDwDataLen();
			REQUEST_TYPE = rheader.getRequestType();
			// 解析header,得到数据长度len
			byte[] content = new byte[len];
			while (inputStream.available() < len) {
				try {
					Thread.sleep(10);
				//	System.out.println(" len --> " + len); 
				} catch (InterruptedException e) { 
					e.printStackTrace();
				}
			}
			  inputStream.read(content, 0, len);
			//int rLen =  
			//System.out.println(" len --> " + len + "  read Len ->" + rLen);
			if (len > 0) {
				result = new byte[hLen + len];
				System.arraycopy(header, 0, result, 0, hLen);
				System.arraycopy(content, 0, result, hLen, len);
			} else {
				result = header;
			}
//---------------------------------------------- 读取数据核心代码 end -------------------------------------- 
		 	 	 c++;
			} 
			closeConnection(connection, outputStream, inputStream);  
			 
		return result;
	} 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值