RMI Fortschritt bei Up/Download anzeigen

_Andi91

Bekanntes Mitglied
Hi,

ist es bei RMI irgendwie möglich, den Fortschritt bei einem Aufruf zu ermitteln?
zB wenn ich eine Datei einlese und dessen Inhalt über RMI verschicke, möchte ich den Fortschritt in einer Progress Bar anzeigen.
 

FArt

Top Contributor
Wenn dir der Server vor dem Download die Größe mitteilt, dann kannst du den Fortschritt in % ermitteln: erhaltene Bytes / alle Bytes * 100.

...und große Daten sollte man streamen ...
 

_Andi91

Bekanntes Mitglied
Wenn dir der Server vor dem Download die Größe mitteilt, dann kannst du den Fortschritt in % ermitteln: erhaltene Bytes / alle Bytes * 100.

...und große Daten sollte man streamen ...

wie komme ich an die Anzahl der erhaltenen Bytes, wenn das ganze über RMI läuft?


Ich habs jetzt mal mit Sockets probiert.
Also ich hab mir eine eigene SocketKlasse geschrieben, die den SocketInputStream "umhüllt".
In der hab ich die read(byte,int,int) Methode überschrieben.
Ich lese immer nur ein Byte aus dem Stream in das Array.
Im Code sieht das folgendermaßen aus:

Java:
int bytesRead = 0;
		
for (int i = 0; i < len; i++)
{
           bytesRead += super.read(b, i, 1);
}
		
return bytesRead;


Klappt soweit schon aber ist sehr performance lastig.
Deswegen hab ich mir gedacht ich les immer einen gewissen Teil statt jedes byte einzeln
also quasi so in der Art:

Java:
int bytesRead = 0;
int stepSize = getStepSize();
		
for (int i = 0; i < len;)
{
	bytesRead += super.read(b, i, stepSize);
	i+=stepSize;
}
		
return bytesRead;

In der Methode getStepSize() wird dann berechnet, wie viel ich immer schrittweise auslesen will in Abhängigkeit von der Größe. Also zB wenn die Länge 1000 ist und ich immer prozentweise lesen will. Dann liefert die Methode 10 (1000/100%) zurück.

Klappt aber irgendwie nicht so ganz. Beim ersten Durchlauf scheint noch alles zu gehen aber dann liefert die Methode super.read(...) -1 zurück, was dann früher oder später zu einer IndexOutOfBoundException führt, weil i -1 ist.
 

Ivan Dolvich

Mitglied
Hi _Andi91,

in der Doku steht:
the total number of bytes read into the buffer,
or -1 if there is no more data because the end of the file has been reached

Das heißt, dass die Datei doch nicht solange ist, wie geglaubt.
Einfach auf bytesRead == -1 prüfen, und nicht weiterlesen, wenns true ist.
 

_Andi91

Bekanntes Mitglied
also ich weis nicht was ich jetzt anders gemacht habe aber jetzt gehts...
Performance mäßig ist es allerdings immer noch eher schlecht (sehr schlecht:noe:)
Mit meinem WrapperStream dauert der Transfer(lokal) einer 16MB grossen Datei ca. 17 Sekunden und ohne 94 ms. Also schon gewaltiger Unterschied...
 

FArt

Top Contributor
also ich weis nicht was ich jetzt anders gemacht habe aber jetzt gehts...
Performance mäßig ist es allerdings immer noch eher schlecht (sehr schlecht:noe:)
Mit meinem WrapperStream dauert der Transfer(lokal) einer 16MB grossen Datei ca. 17 Sekunden und ohne 94 ms. Also schon gewaltiger Unterschied...

Was machst du da? Wofür soll der Wrapper gut sein?
Byteweise lesen ist natürlich nicht so performant. Also immer einen bestimmte Menge Daten lesen, wenn vorhanden. Das macht der BufferedInputStream. Die Größe des Puffers kannst du setzen und deinen Bedürfnissen anpassen...

So geht das im Prinzip:
BufferedInputStreamFileJava Tutorial

Du wolltest das mit RMI machen. Also frägst du die Größe der Datei explizit ab (eine selbst implementierte Methode) und streamst sie dann zum Client.
rmi streaming - Google-Suche
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
C Download-Fortschritt wird falsch angezeigt. Netzwerkprogrammierung 2
J Datei Download vom Server Netzwerkprogrammierung 8
P Jenkins Login per Java Download Manager Netzwerkprogrammierung 15
T Download überprüfung... Netzwerkprogrammierung 9
S HTTP Download von Google-URL mit Parametern Netzwerkprogrammierung 1
S download PDF Netzwerkprogrammierung 2
V Datei Download Fenster Netzwerkprogrammierung 9
R Apache HttpClient File Download? Netzwerkprogrammierung 3
K HTTP Eigener Http Response für Datei-Download Netzwerkprogrammierung 4
F HTTP HTTP-Download: Dateien in einem Verzeichnis ermitteln Netzwerkprogrammierung 8
T Download Programm - Download endet vorzeitig (bricht ab) Netzwerkprogrammierung 11
D HTTP Download - Skript im Weg Netzwerkprogrammierung 4
C Fehler bei PDF-Download Netzwerkprogrammierung 5
B FTP *.class download Netzwerkprogrammierung 2
eLogic Download eines Links Netzwerkprogrammierung 2
Dit_ FTP Download | "PassiveMode"-Socket öffnen Netzwerkprogrammierung 4
B HTTP Audio-Download per Direktlink Netzwerkprogrammierung 4
eLogic Download aus Internet Netzwerkprogrammierung 18
M Download von Webseite Netzwerkprogrammierung 4
T Up- und Download mit https Netzwerkprogrammierung 14
A HTTP Download einer Datei mit "Statistiken" Netzwerkprogrammierung 2
B HTTP PDF Servlet download vom Server zum Client Netzwerkprogrammierung 3
Ollek Download einer Datei durch SFTP mit Java Netzwerkprogrammierung 12
P Name der Download-Datei ermitteln Netzwerkprogrammierung 8
Schandro Download von FTP Server mit maximal Geschwindigkeit Netzwerkprogrammierung 2
P HTTP Problem beim Download von einer Datei Netzwerkprogrammierung 4
ModellbahnerTT Download progress Netzwerkprogrammierung 4
D FTP Download Netzwerkprogrammierung 5
N Video download Netzwerkprogrammierung 4
hdi Webseite auf Download-Links prüfen und Download starten? Netzwerkprogrammierung 7
E Größe der Datei vor Download ermitteln Netzwerkprogrammierung 3
B FTP - Verzeichnis Download Netzwerkprogrammierung 3
A Download-Client Netzwerkprogrammierung 6
A download programm Netzwerkprogrammierung 2
K http-download Netzwerkprogrammierung 12
2 Redirect, Login und Download bei Rapidshare.com Netzwerkprogrammierung 4
L file upload / download über http Netzwerkprogrammierung 5
M Download über URL Netzwerkprogrammierung 7
B knacken bei download von mp3 datei Netzwerkprogrammierung 2
N Download HTTP .php-Seite mit Anmeldung Netzwerkprogrammierung 5
I rmi und download von klassen Netzwerkprogrammierung 12
M Download-Manager in System/Browser einbinden Netzwerkprogrammierung 11
G file download über https mit p12 Zertifikat Netzwerkprogrammierung 4
P Download funtioniert nicht richtig. Netzwerkprogrammierung 2
M FTP Verbindung und download von *.txt Netzwerkprogrammierung 6
L30nS RMI RMI-Server kann Dialog nicht volkommen anzeigen Netzwerkprogrammierung 2
MaxG. Ping in JTextArea anzeigen Netzwerkprogrammierung 11
G Frage zu Servlets und deren Objekte + Bilder in Servlets anzeigen? Netzwerkprogrammierung 11
cowabunga1984 Transferierte Datenmenge eines SOAP Clients (JAX-WS) anzeigen Netzwerkprogrammierung 2
E HTTPS Debuggen (verschlüsselte Daten anzeigen)? Netzwerkprogrammierung 12
Y Anzeigen, kopieren, löschen. Netzwerkprogrammierung 3
D UDP-Daten anzeigen Netzwerkprogrammierung 2
O [IRC] Userliste und Server Messages auslesen und anzeigen Netzwerkprogrammierung 4

Ähnliche Java Themen

Neue Themen


Oben