【问题标题】:Testing file uploading and downloading speed using FTP使用 FTP 测试文件上传和下载速度
【发布时间】:2011-06-01 13:40:57
【问题描述】:

我正在使用 java 的桌面应用程序中工作。在我的应用程序中,我必须执行速度测试,以显示文件上传和下载速度。

对于上传测试,我将一个小测试文件上传到 FTP 服务器,并根据所用时间计算文件上传速度。同样,我正在下载一个测试文件表单服务器并计算下载速度。

但我得到的结果与实际的 FTP 文件上传和下载速度不匹配。似乎与 FTP 服务器建立连接的时间增加了,因此我计算的结果速度更小。

这是我正在使用的文件上传代码:

     public int getTransferRate(File filename)
     {          
       int trRate = 0;

       try {

        OutputStream fout = null;
        InputStream bin = null;

        connect(ftpUser,ftpPass,ftpServer);


        ftp.setFileType(FTPSClient.BINARY_FILE_TYPE);
        ftp.enterLocalPassiveMode();
        fout = ftp.storeFileStream("testuploadfile");

        bin = new FileInputStream(filename);
        byte[] b = new byte[8192];
        int bytesRead = 0;

        long startTime = System.currentTimeMillis();
        long endTime = 0;
        while ((bytesRead = bin.read(b)) != -1) {
            fout.write(b, 0, bytesRead);
            bytesUploadedSet += bytesRead;
        }
        endTime = System.currentTimeMillis();
        trRate = (int) ((float) bytesUploadedSet / (endTime - startTime));

    } catch (IOException ex) {
        Logger.getLogger(FTPFileStorageService.class.getName()).log(Level.SEVERE, null, ex);
    }
    return trRate;
}

您能否建议任何链接或某种方式以获得最近的上传和下载速度。

感谢您提出的所有宝贵建议。

【问题讨论】:

  • 你能发布一个(最小的)代码示例来演示你是如何启动传输和计算速度的吗?

标签: java ftp


【解决方案1】:

首先,filezilla 可能使用的本机代码会比您使用的更快。

为了测试,建立连接并尝试上传许多文件,大约 20 个左右..这应该可以很好地了解结果..通常,还将您的输出记录到逗号分隔的测试文件或其他文件中,您可以稍后导入excel并分析。如果你想做一些硬核性能测试,你可以使用 JMeter 之类的东西。

在任何类型的性能测试中,大样本量(大量样本结果)都会给出最准确的结果。

http://jmeter.apache.org/

【讨论】:

    【解决方案2】:

    建立连接后是否无法启动计时器?

    如果没有,那么对于快速的部分解决方案,增加测试文件的大小,它越大,连接开销就越小。

    如果你需要更准确,那么我会听从有更多hava经验的人...

    【讨论】:

    • 感谢您的回答,我正在尝试使用 2MB 文件进行上传测试并在连接建立后启动计时器,但是当我使用 Filezilla 进行文件传输时,它显示大约 100 kbps 但在测试中我得到的最大速度为 65 kbps。还有什么原因导致无法获得接近准确的结果?
    【解决方案3】:

    您可以使用更简单的协议,例如 HTTP 吗?

    设置 FTP 传输可能很繁琐:需要建立单独的控制和数据连接,并且两个端点需要就使用被动模式还是主动模式来绕过防火墙和 NAT 达成一致。此过程可能只涉及尝试其中一个选项(例如活动)并等待成功或超时,这可能会扭曲您的测量结果。

    【讨论】:

    • 感谢您的回答。由于我的应用程序使用 FTP 进行文件传输,因此需要计算 FTP 速度。对于使用 HTTP,如果启用了防火墙,则需要管理员的一些权限才能允许 http。
    猜你喜欢
    • 1970-01-01
    • 2011-08-14
    • 2012-10-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-07-28
    相关资源
    最近更新 更多