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; }
?