【问题标题】:Simple upload speed test简单的上传速度测试
【发布时间】:2013-11-23 01:55:27
【问题描述】:

我创建了简单的上传速度测试,见下面的代码:

try {
    HttpURLConnection conn = (HttpURLConnection) new URL(url).openConnection();
    byte [] array = new byte [1 * 1024 * 1024]; // 1 Mb data test
    MultipartEntity multipartEntity = new MultipartEntity(HttpMultipartMode.BROWSER_COMPATIBLE);
    multipartEntity.addPart("", new ByteArrayBody(array, MIME.ENC_BINARY, ""));
    conn.addRequestProperty(multipartEntity.getContentType().getName(), multipartEntity.getContentType().getValue());

    conn.setReadTimeout(connTimeout);
    conn.setConnectTimeout(connTimeout);
    conn.setDoOutput(true);
    conn.setRequestMethod("POST");

    long start = System.currentTimeMillis();
    DataOutputStream dataStream = new DataOutputStream(conn.getOutputStream());
    dataStream.write(array);

    String CRLF = "\r\n"; // Line separator required by multipart/form-data.
    String boundary = multipartEntity.getContentType().getValue().replaceAll(".*boundary=", "");
    dataStream.writeBytes("--" + boundary + CRLF);

    dataStream.flush();
    dataStream.close();

    int responseCode = conn.getResponseCode();    
    long end = System.currentTimeMillis();

    if (responseCode == HttpURLConnection.HTTP_OK) {
        long speed = Math.round(array.length/ (end-start));
        } else {
            // something went wrong
        }

一切都很完美,但我有一个小问题。在 wifi 等快速网络上,发送 1 Mb 数据只需不到一秒的时间。但在较慢的网络上,可能需要 10-30 秒,具体取决于网络和信号。所以我意识到,最好不要上传固定长度的数据,而是使用时间限制之类的东西 - 所以上传数据不超过例如 3 秒。

问题很简单 :) 如何实现这个 - 我的意思是发送数据,同时计算时间,当限制到期时停止发送,看看我发送了多少并计算速度?

【问题讨论】:

    标签: java file-upload upload httpurlconnection speed-test


    【解决方案1】:

    您发送的字节数并不重要。即使您上传 50 KB 时将其除以上传所用的毫秒数(对于快速连接,该数字将相对较小),该除法将导致相对较大的数字。结论:安全并减少您发送的字节数。

    【讨论】:

      【解决方案2】:

      使用二分搜索之类的方法怎么样,因此您可以从少量数据开始,然后继续将大小翻倍,直到您的结果时间足够长,可以合理地了解带宽。

      【讨论】:

      • hm,我认为最好是这样做:while (notExpiredTimeLimit) { 发送到服务器(我的数组的另外 1000 个字节)} 问题是,我真的不知道该怎么做这....因为看起来数据正在 conn.getResponseCode() 行中发送到服务器,所以我无法用它做任何事情:)
      猜你喜欢
      • 1970-01-01
      • 2014-07-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-04-08
      • 1970-01-01
      • 1970-01-01
      • 2011-06-01
      相关资源
      最近更新 更多