pc에서 socket을 통해android 핸드폰에서 화면 캡처를 수신합니다

4490 단어 androidsocket캡처
ByteBuffer 패키지 byte 배열을 사용하여 데이터 추가 작업을 간소화합니다.앞의 네 바이트는 수신할 그림의 크기를 표시하고 뒤이어 캡처 그림 데이터입니다.원래의 실현은 비교적 거칠다. 다음은 내가 고친 코드인데 논리적으로 비교적 엄밀하다.

  
  
  
  
  1. InOutStructure inOutStructure = InOutStructure 
  2.                 .getInOutStructure(serialNumber); 
  3.  
  4.         int length = 0
  5.         byte[] captureBuffer = cc.getCaptureBuffer(); 
  6.          
  7.         ByteBuffer bb = ByteBuffer.wrap(captureBuffer); 
  8.          
  9.         try { 
  10.             inOutStructure.GetOut().println(cmd); 
  11.             // flush  
  12.             inOutStructure.GetOut().flush(); 
  13.              
  14.             byte[] buffer = new byte[1024]; 
  15.              
  16.             //  :java.net.SocketException 
  17.             int dataLen = inOutStructure.getIn().readInt(); 
  18.             int remainder = dataLen; 
  19.              
  20.             while(true) { 
  21.                 //   
  22.                 int expect_recv_len = (remainder > 1024) ? 1024 : remainder; 
  23.                 int read = inOutStructure.getIn().read(buffer, 0, expect_recv_len); 
  24.                 length += read; 
  25.                  
  26.                 //  read -1 
  27.                 bb.put(buffer, 0, read); 
  28.                  
  29.                 remainder = dataLen - length; 
  30.                 //  0,  
  31.                 if (remainder == 0) { 
  32.                     break
  33.                 } 
  34.             } 
  35.             
  36.             //   
  37.             TaskResult.cacheCaptureBuffer(serialNumber, captureBuffer, length); 
  38.         } catch (IOException e) { 
  39.             e.printStackTrace(); 
  40.         } 

좋은 웹페이지 즐겨찾기