# Download-Client



## APW (1. Jan 2008)

Guten Abend,

wir bastel derzeit an einem kleinen Download-Client, dabei haben wir derzeit zwei Probleme an denen wir herum knappere - aber einfach nicht weiterkommen(sind beide Anfänger). Wir hoffen ihr könnte uns ein paar Tipps geben

*Problem 1* Downloadspeed ermitteln:

Mein Freund hat diese Vorschlag eingebracht, leider funktioniert er nicht - was genau stimm daran nicht?



```
public void downloaded()
  {
	  try
	  {
	  
	  while (size != downloaded)
	  {
		  //Zahl wird auf 0 gesetzt
		  Zahl = 0;
		  //Zahl wird hochgezählt
		  Zahl++;
		  
		  if (Zahl % 2 == 0)
		  {
			  Thread.currentThread().setName("neu");
		  }
		  else
		  {
			  Thread.currentThread().setName("alt");
		  }
		  if(Thread.currentThread().getName() == "alt")
		  {
			alteBytes = downloaded - size;  
		  }
		  else
		  {
			  neueBytes = downloaded - size;
			  downBytes = alteBytes - neueBytes;
			  if (downBytes > 1024)
			  {
				  downBytes = downBytes / 1024;
			  }
			  
		  }
	  	  }
	  catch
	  (Exception e)
	  {
		  System.err.print("Es ist ein Fehler aufgetreten!");
		  //Muss auch noch der GUI angepasst werden
	  }
		  //JTable muss (downBytes +"kb/s"); anzeigen 
		  
	  }
  }
  //Änderungen müssen noch an den JTable angepasst werden
```


*Problem 2* Download mit "Code hinten dran(fällt mir gerade nichts ein wie man das nennen sollte)" geht nicht

z.B. 
Ich würde gerne die posting.php herunterladen, wenn der link so aussieht(http://www.java-forum.org/de/posting.php) funktioniert es problemlos, jedoch sobald soetwas dazu kommt http://www.java-forum.org/de/posting.php*?mode=newtopic&f=23*, verweigert er den Dienst.
Woran könnte das liegen?


----------



## anfänger15 (1. Jan 2008)

Problem2:

Dein Client versucht die datei http://www.java-forum.org/de/posting.php?mode=newtopic&f=23 herunterzuladen. Die gitb es aber nicht da sie http://www.java-forum.org/de/posting.php heißt. Eine Möglichkeit, die mir gerade einfällt wäre mit der Klasse String zu testen ob ein '?' im String enthalten ist. Wenn ja dann einfach den hinteren teil des Strings abschneiden.


----------



## HoaX (2. Jan 2008)

problem1: was versuchst du da im code zu berechnen, kannst du das kommentieren? mir scheint "Zahl" immer 1 zu sein ... außerdem vergleicht man strings nicht mit == sondern mit String#equals

problem2: wie lädst du denn herunter? prinzipiell sollte es so funktionieren mit den parametern hinten an der url dran.

@anfänger: die parameter stören den server nicht, es ist im rfc festgelegt dass diese so übertragen werden können und dürfen


----------



## maki (2. Jan 2008)

http://www.java-forum.org/de/posting.php sollte das gleiche sein wie  http://www.java-forum.org/de/posting.php?p1=w1&p2=w2

Die letzte URL enthält GET Parameter, vielleicht mag der Server den eventuellen Mischbetrieb zwischen GET und POST nicht?


----------



## anfänger15 (2. Jan 2008)

>die parameter stören den server nicht, es ist im rfc festgelegt dass diese so übertragen werden können und dürfen

das wusste ich nicht da ich dies bisher nicht gemacht habe, aber schon einmal ein problem mit php hatte und da ging es als ich die parameter weggelassen hab.


----------



## Guest (7. Jan 2008)

HoaX hat gesagt.:
			
		

> problem1: was versuchst du da im code zu berechnen, kannst du das kommentieren? mir scheint "Zahl" immer 1 zu sein



Dem kann ich nur zustimmen ^^. Du setzt innerhalb einer While Schleife das Attribut Zahl immer wieder auf 0 und zählst es hoch.

Mach bitte die Initialisierung ausserhalb der While-Schleife !!  Sonst hat das in meinen Augen keinen Sinn. Aber was genau soll Zahl innerhalb deines Programmes machen?

GReeze Gast


----------



## Gast (7. Jan 2008)

Was zu beachten ist (du solltest die also GEdanken über den inneren Ablauf des Programmes machen. Also lass erstmal das Grafische weg):

- Es muss die Dateigröße bekannt sein. (durch Ermittlung auf dem Server und die Übermittlung zum Client?)
- Den Speed kannst du während des downloadens berechnen. Frage sollte also sein: Wie schnell kommen die Bytes bei mir an!
- Irgendwie musst du den Dateinamen herausfinden um die ankommenden Bytes auf dem Client / Zielrechner in ein benanntes Fileobjekt steckst.

Nur ein Tipp am Rande: Lass das Programm (wie auch oben schon erwähnt) einfach mal in der Konsole ablaufen.


----------

