业务主要是通过socket上传文件,
我在协议的头四个字节标明了文件的长度(整形),
如何通过这个长度在read的时候能快速获取完byte[] 

解决方案 »

  1.   

    为什么不用httpclient封装好的方法呢,协议很容易出现问题的private void uploadFile2Svr2() {
    if (paizhao) {
    file = new File(camera_paht);
    // paizao图片的地址
    }
    if (xiangce) {
    if(uploadPhotPath==null)
    return;
    file = new File(uploadPhotPath);
    }

    System.out.println("camera------------------------807");
    // 相册图片的地址 String httpUrl = path;
    System.out.println("---------------");
    HttpPost request = new HttpPost(httpUrl);
    HttpClient httpClient = new DefaultHttpClient();
    FileEntity entity = new FileEntity(file, "binary/octet-stream");
    HttpResponse response;
    request.setEntity(entity);
    entity.setContentEncoding("binary/octet-stream");
    try {
    response = httpClient.execute(request);
    System.out.println(response.toString());
    } catch (ClientProtocolException e) {
    Toast.makeText(Camera.this, "图片不可用,请重新拍摄上传", 3).show();
    // TODO Auto-generated catch block
    e.printStackTrace();
    } catch (IOException e) {
    // TODO Auto-generated catch block
    Toast.makeText(Camera.this, "图片不可用,请重新拍摄上传", 3).show();
    e.printStackTrace();
    }
    }
      

  2.   

    Android应用开发之使用Socket进行大文件断点上传续传可以通过循环每次read指定的长度,直到到文件结尾结束。