【发布时间】: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;
}
您能否建议任何链接或某种方式以获得最近的上传和下载速度。
感谢您提出的所有宝贵建议。
【问题讨论】:
-
你能发布一个(最小的)代码示例来演示你是如何启动传输和计算速度的吗?