使用FTP测试文件上传和下载速度

时间:2010-12-30 13:35:18

标签: java ftp

我在使用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;
}

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

我感谢您提出的所有宝贵意见。

3 个答案:

答案 0 :(得分:1)

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

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

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

答案 1 :(得分:1)

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

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

在任何类型的性能测试中,样本量较大(样本结果很多)可以得到最准确的结果。

http://jmeter.apache.org/

答案 2 :(得分:0)

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

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