1
초당 크기 전송 속도를 표시하는 기능이 필요합니다.파일을 계속 다운로드하는 동안 초당 전송률을 표시하는 방법
자바 코드로 웹에서 파일을 다운로드하고 파일을 다운로드하는 동안 초당 전송 속도를 표시해야합니다.
아래의 코드는,이 here 에서 완전히 내 찍은되지 유의하시기 바랍니다 다운로드가 완료되면 전송 속도를 계산,하지만 난 현재 어떻게 코드를 만드는 아무 생각이 없습니다 만 아래의 코드 매초마다 전송률을 표시하려면 개념적 아이디어 또는 코드 제안이 필요합니까?
public static void main(String argc[]) throws Exception {
long totalDownload = 0; // total bytes downloaded
final int BUFFER_SIZE = 1024; // size of the buffer
byte[] data = new byte[BUFFER_SIZE]; // buffer
BufferedInputStream in = new BufferedInputStream(
new URL(
"http://ipv4.download.thinkbroadband.com:8080/5MB.zip")
.openStream());
int dataRead = 0; // data read in each try
long startTime = System.nanoTime(); // starting time of download
while ((dataRead = in.read(data, 0, 1024)) > 0) {
totalDownload += dataRead; // adding data downloaded to total data
System.out.println(totalDownload);
}
/* download rate in bytes per second */
float bytesPerSec = totalDownload
/((System.nanoTime() - startTime)/1000000000);
System.out.println(bytesPerSec + " Bps");
/* download rate in kilobytes per second */
float kbPerSec = bytesPerSec/(1024);
System.out.println(kbPerSec + " KBps ");
/* download rate in megabytes per second */
float mbPerSec = kbPerSec/(1024);
System.out.println(mbPerSec + " MBps ");
}
동일한 기본 개념이지만 샘플을 가져와야합니다 결과는 평균입니다 ... – MadProgrammer
한 번에 1024 바이트를 다운로드하는이 루프가 있습니다. 동일한 루프에서 일부 통계 (및 해당 표시)를 업데이트 할 수 있습니다. 어쩌면 매 반복마다가 아니라 매 순간마다 그렇습니다. 다운로드가 완전히 중단되지 않으면 정기적 업데이트가 제공됩니다. 응답하지 않으면 통계를 폴링하는 두 번째 스레드가 필요합니다. – Thilo
@MadProgrammer는 "샘플을 복용해야 할 필요가 있습니다. 정기적 인 기지"라고 말하면 좀 더 자세히 설명 할 수 있습니까? 나는 아직도 당신의 제안으로 분명하지 않다. –