【问题标题】:How to get upload speed in JAVA如何在JAVA中获得上传速度
【发布时间】:2014-02-20 18:38:44
【问题描述】:

我正在研究安卓应用,我想构建示例代码来检查上传速度。

我已经建立了上传速度检查方法,但我不确定它是否正常工作。这是因为即使 android 手机没有正确的互联网连接,我的方法也会返回上传速度

我构建了类似的方法..

首先,读取 4.6 MB 的文本文件,然后存储到字符串变量中

第二,检查开始时间

第三,使用 post 方法和 nameValuePair 将 4.6MB 字符串变量发送到 Google 应用引擎(我的 google 应用引擎。它正在捕获字符串数据。它不做任何事情。)

四、检查结束时间

最后,获取(文件大小)/(结束时间 - 开始时间)作为上传速度

这是我的代码...

public double Get_UPload_Speed() throws IOException{
    String file_path =("46.txt");
    File gone = new File(file_path);
    String line = "";
    double filesize = bts.Get_File_Size(file_path);
    int maxsize =  rf.Get_Total_Line(file_path);
    BufferedReader in = new BufferedReader(new FileReader(gone));

    HttpPost httpPost = new HttpPost("http://google.app.engine.address.com");
    List<NameValuePair> nameValuePair = new ArrayList<NameValuePair>(2);
    StringBuilder stringBuilder = new StringBuilder();


    for(int index = 0 ; index < maxsize ; index++){
        if((line = in.readLine()) != null){
            // keep appending line of text to String buffer
            stringBuilder.append(line);         
        }
        else{
            break;
        }
    }
    String UL_Packet = stringBuilder.toString();
    double startTime = System.currentTimeMillis();
    nameValuePair.add(new BasicNameValuePair("content",UL_Packet));
    nameValuePair.add(new BasicNameValuePair("guestbookName", "default"));
httpPost.setEntity(new UrlEncodedFormEntity(nameValuePair));
            Log.d("UploadManager", "Upload Start: " + startTime + " secs");
        Log.d("UploadManager", "Upload End: " + endTime + " secs");
        Log.d("UploadManager", "Tranfer Time: " + tranferTime + " secs");
        Log.d("UploadManager", "Size of file " + filesize + " MB");
        double endTime = System.currentTimeMillis();
        double tranferTime = (endTime - startTime)/1000;
        double rate = filesize/ tranferTime;         
        Log.d("UploadManager", "Upload speed: "+rate +" Mbps"); 
        return rate;
    }

但是,我不确定这是否是提高上传速度的正确方法。

有没有可靠的方法来构建上传速度检查方法?

谢谢

【问题讨论】:

  • 你的解决方案有什么问题,你得到了什么结果?

标签: java android tomcat servlets


【解决方案1】:

您尝试使用Android TrafficStats 吗?

/** Upload a random string and measure transfer speed */
public double Get_UPload_Speed()
    throws IOException
{
    int        MB         = 1;
    HttpPost   httpPost   = new HttpPost("http://google.app.engine.address.com");
    HttpClient httpClient = DefaultHttpClient();

    /** generate random string */
    char[] chars = "abcdefghijklmnopqrstuvwxyz1234567890";
    StringBuilder sb     = new StringBuilder();
    Random        random = new Random();
    for (int i = 0; i < MB*1024*1024; i++) {
        sb.append(
                chars[random.nextInt(chars.lenght)]);
    }

    long totalTxBytes = TrafficStats.getTotalTxBytes(); 
    long totalRxBytes = TrafficStats.getTotalRxBytes();
    double startTime  = System.currentTimeMillis();

    String UL_Packet = sb.toString();
    List<NameValuePair> nameValuePair = new ArrayList<NameValuePair>(2);
    nameValuePair.add(
            new BasicNameValuePair("content",UL_Packet));
    nameValuePair.add(
            new BasicNameValuePair("guestbookName", "default"));
    httpPost.setEntity(
            new UrlEncodedFormEntity(nameValuePair));

    httpClient.execute(httpPost);

    double endTime = System.currentTimeMillis();
    double tranferTime = (endTime - startTime)/1000;

    double rate = 
        (  TrafficStats.getTotalTxBytes() - totalTxBytes
         + TrafficStats.getTotalRxBytes() - totalRxBytes) / tranferTime;         

    /** Log */
    Log.d("UploadManager", "Upload Start: " + startTime            );
    Log.d("UploadManager", "Upload End:   " + endTime              );
    Log.d("UploadManager", "Tranfer Time: " + tranferTime + " secs");
    Log.d("UploadManager", "Data size:    " + MB          + " MB  ");
    Log.d("UploadManager", "Upload speed: " + rate        + " MB/s"); 

    return rate;
}

【讨论】:

    猜你喜欢
    • 2023-03-14
    • 1970-01-01
    • 1970-01-01
    • 2018-02-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-04-13
    • 2012-06-16
    相关资源
    最近更新 更多