View Full Version : [JAVA]Visualizzare velocità di trasferimento del socket
Ciao a tutti volevo sapere se era possibile visualizzare via linea di comando o magari con una semplice finestra grafica, la velocità di trasferimento di un file scambiato attraverso un socket.
ServerSocket sClient=new ServerSocket(12345);
Socket sDati=sClient.accept();
DataInputStream input=new DataInputStream(sDati.getInputStream());
FileOutputStream fileCopia=new FileOutputStream(nomefile);
int c;
System.out.println("inizio copia");
while((c=input.read())!=EOB)
fileCopia.write(c);
fileCopia.close();
input.close();
System.out.println("fine copia");
in questo esempio come potrei fare?
p.s so che non si fà l'assegnamento nel ciclo, però era un vecchio esercizio che ho copiato e incollato:D
Frank1962
16-05-2009, 05:22
bè si ...però ti devi creare tu il codice calcolandoti a manina la bandwidth, a meno di non trovare in giro qualche soluzione poco incasinata da poter utilizzare...
comunque, per comodità, potresti crearti una classe che estende l'OutputStream (o anche l'InputStream, dipende da come vuoi svolgere l'esercizio) implementando i metodi base e aggiungendotene uno che a ogni
chiamata calcola, alla grossolana, la banda utilizzata dall'ultima chiamata del metodo ......una cosa del tipo:
import java.io.IOException;
import java.io.OutputStream;
public class BandwidthOutputStream extends OutputStream {
private OutputStream os = null;
private int count = 0;
private long lastTime = 0;
public BandwidthOutputStream(OutputStream os) {
this.os = os;
}
public void write(int b) throws IOException {
os.write(b);
count++;
lastTime = System.currentTimeMillis();
}
public int getBandwidthInKB() {
//converto la quantità di dati inviati in KB
int kb = count/1024;
//calcolo il tempo trascorso in sec. dall'ultima chiamata del metodo
int sec = (int)(System.currentTimeMillis()-lastTime)/1000;
//ritorno i KB/sec
return kb/sec;
}
}
Alla fine non è precisissima come misurazione però dovrebbere essere un'approssimazione sufficente per quel che devi fare (ovvero superare qualche tipo di esame suppongo :D)
Quà trovi qualcosa di più completo, prolisso ...quasi logorroico http://docstore.mik.ua/orelly/java-ent/dist/ch08_04.htm
Sui forum di programmazione di solito girano dei bot senzienti di nome PGI o similari che annoverano in se tutta la conoscenza/onniscenza :D per quanto riguarda Java quindi se mai capitassero in questo Thread sicuramente potrebbero fornirti un soluzione moolto più efficente e precisa dei quattro scarabocchi che ti ho scritto quà sopra di prima mattina ....
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.