【问题标题】:Java API to Check Internet Speed (upload/download) [closed]用于检查 Internet 速度的 Java API(上传/下载)[关闭]
【发布时间】:2020-09-02 10:15:52
【问题描述】:

我正在用 Java 构建一个应用程序,当我们进入 https://speedtest.net 类型的站点时,我需要知道下载/上传速度。 是否有任何 API/java 内置方法可以让我获得速度。 谢谢!

【问题讨论】:

    标签: java download upload bandwidth


    【解决方案1】:

    你可以使用JSpeedTest:

    SpeedTestSocket speedTestSocket = new SpeedTestSocket();
    
    // add a listener to wait for speedtest completion and progress
    speedTestSocket.addSpeedTestListener(new ISpeedTestListener() {
    
        @Override
        public void onCompletion(SpeedTestReport report) {
            // called when download/upload is complete
            System.out.println("[COMPLETED] rate in bit/s   : " + report.getTransferRateBit());
        }
    
        @Override
        public void onError(SpeedTestError speedTestError, String errorMessage) {
             // called when a download/upload error occur
        }
    
        @Override
        public void onProgress(float percent, SpeedTestReport report) {
            // called to notify download/upload progress
            System.out.println("[PROGRESS] progress : " + percent + "%");
            System.out.println("[PROGRESS] rate in bit/s   : " + report.getTransferRateBit());
        }
    });
    
    • HTTP 下载:
    speedTestSocket.startDownload("http://ipv4.ikoula.testdebit.info/1M.iso");
    
    • HTTP 上传:
    speedTestSocket.startUpload("http://ipv4.ikoula.testdebit.info/", 1000000);
    
    • HTTP 固定持续时间下载:
    speedTestSocket.startFixedDownload("http://ipv4.ikoula.testdebit.info/100M.iso", 10000);
    
    • HTTP 固定持续时间上传:
    speedTestSocket.startFixedUpload("http://ipv4.ikoula.testdebit.info/", 10000000, 10000);
    

    样本输出:

    [PROGRESS] progress : 0.1223%
    [PROGRESS] rate in bit/s   : 4253913.0432
    [PROGRESS] progress : 1.2903%
    [PROGRESS] rate in bit/s   : 18768000.0000
    [PROGRESS] progress : 1.4363%
    [PROGRESS] rate in bit/s   : 19150666.6664
    .
    .
    .
    [PROGRESS] progress : 98.6723%
    [PROGRESS] rate in bit/s   : 11584655.1216
    [PROGRESS] progress : 99.2563%
    [PROGRESS] rate in bit/s   : 11651509.9048
    [PROGRESS] progress : 100.0%
    [PROGRESS] rate in bit/s   : 11694196.7552
    [COMPLETED] rate in bit/s   : 11690778.8984
    

    Maven 依赖:

    <!-- https://mvnrepository.com/artifact/fr.bmartel/jspeedtest -->
    <dependency>
        <groupId>fr.bmartel</groupId>
        <artifactId>jspeedtest</artifactId>
        <version>1.32.1</version>
    </dependency>
    

    【讨论】:

      【解决方案2】:

      我认为没有现成的 API。

      此解决方案的设置是客户端-服务器设计

      1. 开始测试(客户端向服务器请求文件 URI 及其大小)
      2. 服务器以要下载的文件大小及其 URI 响应客户端
      3. 客户端使用 URI 请求文件(启动计时器)
      4. 客户端会定期发布有关下载完成量的事件
      5. 当文件下载完成时,客户端检查下载是否完成(停止计时器)
      6. 计算下载上述大小的文件所需的时间(停止 - 开始) - 假设这是时间T
      7. 客户端现在根据下载的文件大小和下载文件所用的时间来计算速度。

      您也可以让客户端定期进行此计算,并显示客户端在每次更​​新事件中所经历的速度。

      希望这会有所帮助。 :)

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2014-02-17
        • 1970-01-01
        • 2011-05-16
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-02-04
        相关资源
        最近更新 更多