Downloadgeschwindichkeit
Übersicht

![]() |
PummelieBetreff: Downloadgeschwindichkeit |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hi, schon wieder ein Problem von mir.
(Die suche hat zwar Ergebnisse hervorgebracht, aber ich werd daraus nicht schlau ![]() Also meine bissherige Abhilfe für den download von Dateien sah so aus: Code: [AUSKLAPPEN] downloadfile("Sever", "Datei", "Speicherort") Function downloadfile(host$, url$, ziel$) tcp = OpenTCPStream(host$,80) If Not tcp Return 0 WriteLine tcp, "GET " + url$ + " HTTP/1.0" WriteLine tcp, "host: " + host WriteLine tcp, "" Repeat z$ = ReadLine(tcp) If Left(z$,16) = "Content-Length: " size = Mid$(z$,17) Until ReadLine(tcp) = "" Or Eof(tcp) If Eof(tcp) Return 0 Fileout = WriteFile(ziel$) If Not size Repeat WriteByte fileout, ReadByte(tcp) Until Eof(tcp) Else bank = CreateBank(size) ReadBytes bank, tcp, 0, size WriteBytes bank, fileout, 0, size FreeBank bank End If CloseFile fileout CloseTCPStream tcp Return 1 End Function Das hat auch wunderbar geklapt, doch ich konnte werder Fortschritt noch Geschwindichkeiten sehen! Das einzige was mir Hinweiß darauf gab das der Download zuende war, war das das Prográmm weiter fortfuhr. Ich hätte gern das es mir fortschritt und Geschwindichkeit anzeigt. Danke schonmal! |
||
Phlox |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Frag mich nicht, woher ich den Code habe, ich hab es vergessen ---
(Programmierer bitte melden) Code: [AUSKLAPPEN] Function DownloadFile(url$,dest$="",port=80)
If Lower$(Left$(url$,6))="ftp://" count=Len(url$)-7 url$=Right$(url$,count) EndIf If Lower$(Left$(url$,7))="http://" count=Len(url$)-7 url$=Right$(url$,count) EndIf pos=Instr(url$,"/")-1 web$=Left$(url$,pos) file$=Right$(url$,Len(url$)-pos) If dest$="" dest$=url$ While Instr(dest$,"/") dest$=Right$(dest$,Len(dest$)-Instr(dest$,"/")) Wend EndIf stream = OpenTCPStream(web$,port) If stream=0 Then Return 0 WriteLine stream,"GET "+file$+" HTTP/1.0" WriteLine stream,"Host: "+web$ WriteLine stream,"" Delay 1 returns$=ReadLine$(stream) stream_lenth=0 While (returns$<>"") And (Not KeyDown(1)) If Upper$(Left$(returns$,16))="CONTENT-LENGTH: " stream_length=Mid(returns$,17,Len(returns$)-16) EndIf returns$=ReadLine$(stream) Wend destfile = WriteFile(dest$) returnb=ReadByte(stream) wait=MilliSecs()+1000 If destfile Then WriteByte destfile,returnb byte=0 all=1 While (ReadAvail(stream) Or MilliSecs()<wait) And (Not KeyDown(1)) If MilliSecs()>chktime checked=byte all=all+byte byte=0 kbps#=checked/1024. If stream_length>0 And kbps#>0 remaining=((stream_length-all)/(kbps#*1000)) hr=remaining/3600 - (remaining/3600 Mod 1) mi=remaining/60 - (remaining/60 Mod 1) se=remaining Mod 60 hour$=hr minute$=mi seconds$=se If hr<10 Then hour$="0"+hr If mi<10 Then minute$="0"+mi If se<10 Then seconds$="0"+se remain$=hour$+":"+minute$+":"+seconds$ If all=stream_length Then remain$="R:E:A:D:Y" Else remain$="??:??:??" If all=stream_length And all>1 Then remain$="R:E:A:D:Y" EndIf Cls Text 1,1,kbps# Text 1,20,all Text 1,40,stream_length ;Text 1,60,remain lastcheck=MilliSecs() chktime=MilliSecs()+1000 EndIf If ReadAvail(stream) returnb=ReadByte(stream) If destfile Then WriteByte destfile,returnb wait=MilliSecs()+2000 byte=byte+1 EndIf Wend If KeyDown(1) Then CloseFile destfile DeleteFile destfile CloseTCPStream stream Return 0 EndIf CloseTCPStream stream If destfile Then CloseFile destfile Return 1 End Function MfG |
||
![]() |
Pummelie |
![]() Antworten mit Zitat ![]() |
---|---|---|
Klapt irrgendwie net, kommt folgende Fehlermeldung:
Invalid Blitz2D Buffer handle |
||
Phlox |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Bei welchem Befehl? | ||
![]() |
Pummelie |
![]() Antworten mit Zitat ![]() |
---|---|---|
Bei denen konnte ich es herausfinden:
Code: [AUSKLAPPEN] Cls Text 1,1,kbps# Text 1,20,all Text 1,40,stream_length Bei jeden von ihnen |
||
Phlox |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
kann b2d kein Text? Komisch... | ||
![]() |
DAK |
![]() Antworten mit Zitat ![]() |
---|---|---|
bei mir (B3d) keine Probleme... | ||
Gewinner der 6. und der 68. BlitzCodeCompo |
![]() |
Pummelie |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hab jetz auch geschaft, das es geht, aber naja.
Der speed ist mieß ![]() Schade das das die einzige möglichkeit ist die Geschwindichkeit zu berechnen, es sollte eine schöne dll geben! Edit: Noch mals danke für alle, es geht jetz super! |
||
- Zuletzt bearbeitet von Pummelie am Fr, Jul 11, 2008 12:11, insgesamt einmal bearbeitet
![]() |
flona |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ich glaube die K-Net-Lib kann des, such mal danach | ||
www.Dreier-Florian.kilu.de
Intel Core 2 Quad Q9400 | Zotac 9800GT | 4GB RAM | 1TB HDD | Windows 7 Professional 32bit |
![]() |
Hip Teen |
![]() Antworten mit Zitat ![]() |
---|---|---|
das ist garantiert nicht die einzige Möglichkeit, die Geschwindigkeit zu berechnen, man kann so Sachen auch geschickt programmieren. Ich mach mich mal heute Abend daran - so eine krude Funktion kann und darf man ja nicht so alleine hier im Forum lassen -.-
Edit: So, hier jetzt mal eine gescheitere Funktion. Auf jedenfall funktioniert die, man kann die auf beliebige Bandbreiten einstellen und sie zeigt zuverlässig die aktuelle Geschwindigkeit an (aktualisierungsintervall beliebig einstellbar), die Gesammtgeschwindigkeit und die Prozentzahl an. Lässt sich auch, um weniger CPU Zeit zu verschwenden, mit Timern oder Delay runterschalten, ohne dass die Downloadgeschwindigkeit leidet. Dazu muss man nur den Puffer anpassen. Hab aber nur den eigentlichen Downloadteil angepasst - durch den oberen Teil hatte ich keine Lust durchzublicken.... Ist aber nicht so wunderbar schön, wie die Funktion aussieht. Liegt daran, dass ich die bestehende abgewandelt habe. Also, vom Codestil muss man nicht lernen ![]() Code: [AUSKLAPPEN] Function DownloadFile(url$,dest$="",port=80)
If Lower$(Left$(url$,6))="ftp://" count=Len(url$)-7 url$=Right$(url$,count) EndIf If Lower$(Left$(url$,7))="http://" count=Len(url$)-7 url$=Right$(url$,count) EndIf pos=Instr(url$,"/")-1 web$=Left$(url$,pos) file$=Right$(url$,Len(url$)-pos) If dest$="" dest$=url$ While Instr(dest$,"/") dest$=Right$(dest$,Len(dest$)-Instr(dest$,"/")) Wend EndIf stream = OpenTCPStream(web$,port) If stream=0 Then Return 0 WriteLine stream,"GET "+file$+" HTTP/1.0" WriteLine stream,"Host: "+web$ WriteLine stream,"" Delay 1 returns$=ReadLine$(stream) stream_length=0 While (returns$<>"") And (Not KeyDown(1)) If Upper$(Left$(returns$,16))="CONTENT-LENGTH: " stream_length=Mid(returns$,17,Len(returns$)-16) EndIf returns$=ReadLine$(stream) Wend destfile = WriteFile(dest$) returnb=ReadByte(stream) wait=MilliSecs()+1000 If destfile Then WriteByte destfile,returnb byte=0 all=1 ; Hier beginnt mein Teil, der oben ist wohl einigermaßen OK, der andere Teil war aber... nicht so gut ;-) pufferGroesse = 102400 ; 100 kb Puffer, damit auch hohe Bandbreiten ausgenutzt werden können. Bei 100 mbit Leitungen und ;höher ist ein höherer Wert vielleicht sinnvoll - hier geht probieren 2 Meter über studieren! bank = CreateBank (pufferGroesse) Local prozent#, Gedownloadet#, kbProSekunde#, messen = 1, zeit = MilliSecs() Stop zeitGesamt = MilliSecs() Repeat rest = ReadAvail (stream) If rest > 0 Then If GescwhMessen = 1 Then groesse = Ged End If If rest < pufferGroesse Then pufferGroesse = rest End If puffer = ReadBytes (bank, stream, 0, pufferGroesse) WriteBytes (bank, destfile, 0, pufferGroesse) Gedownloadet = Gedownloadet + pufferGroesse tempGedownloadet = tempGedownloadet + pufferGroesse Prozent = ((Gedownloadet / stream_length) * 100) zeitDifferenz = MilliSecs() - zeit Delay 10 ;aktuelle Geschwindigkeit berechnen If zeitDifferenz > 200 Then ; Fünf mal die Sekunde die Geschwindigkeit berechnen kbProSekunde = tempGedownloadet / zeitDifferenz tempGedownloadet = 0 zeit = MilliSecs() ; Ausgeben der Infos, kann auch anders erfolgen DebugLog "Geschwindigkeit: " + kbProSekunde + " kb/s" DebugLog "Fortschritt: " + Prozent + " %" End If End If Until Eof (stream) gesamtZeit# = ( (Float (MilliSecs() ) - Float (zeitGesamt) ) / 1000.0 ) DebugLog "Zeit in s: " + gesamtZeit DebugLog "Gesamtgeschwindigkeit in kb/s: " + stream_length / (gesamtZeit*1000) CloseTCPStream stream If destfile Then CloseFile destfile Stop Return 1 End Function |
||
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group