Seite 1 von 6

Internet Speedtest

Verfasst: Freitag 21. Oktober 2011, 08:41
von Campionissimo
Hallo Zusammen,

weiß jemand, wie ich einen Inernet Speedtest per Programmcode machen könnte ?
Downloadlink & Uplink
Oder gibt da schon was?

Vielen Dank

Re: Internet Speedtest

Verfasst: Montag 24. Oktober 2011, 12:23
von Leonidas
Etwas mit bekannter größe runterladen und schauen wie lange es gedauert hat, und analog auch hochladen. Und zum Runter- und Hochladen am besten ein CDN verwenden, so dass immer schnelle Edge-Server in der Nähe des Users stehen. Ich hab hier eine ca. 3 MB/s-Anbindung, aber einige Sachen tröpfeln nur mit 200 Kbyte/s rein, sowas vereitelt die "Messung".

Re: Internet Speedtest

Verfasst: Mittwoch 26. Oktober 2011, 19:39
von Campionissimo
Danke für die Antwort. Sowas habe ich schon geschrieben. Weiß aber nicht, ob meine Messung so wirklich stimmt. Ich habe mal eine kleine Datei heruntergeladen und eine größere. Dieser Werte unterscheiden sich aber extrem ;(

Re: Internet Speedtest

Verfasst: Donnerstag 27. Oktober 2011, 07:11
von jens
Grundsätzlich kann so ein Speedtest eigentlich nur die aktuelle Geschwindigkeit zwischen einem selbst und dem genutzten Server aufzeigen. Dazwischen sind allerdings auch noch einige Zwischenstationen... Somit kann man die tatsächliche Verbindungsgeschwindigkeit nicht wirklich zuverlässig ermitteln.

Also egal wie man es macht, es ist nur ein Näherungswert und einem Momentaufnahme...

Schau dir mal an, wie es http://www.wieistmeineip.de/speedtest/ macht. Ich hab es mal mit Firebug beobachtet:
Es wird eine Anfrage wie http://speedtest-smk.wieistmeineip.de/u ... hp?size=64 per GET an den Server geschickt. Der liefert dann eine HTML Seite mit einer Formular zurück. In einem versteckten Feld sind anscheinend Zufallsdaten mit entsprechender Größe. Das Formular wird dann wieder per POST an den Server gesendet.
Mit Javascript werden die Zeiten aufaddiert.

Irgendwie nicht sonderlich kompliziert. Der JS Code ist auch recht leserlich und nachvollziehbar. Wäre IMHO nicht all zu viel Arbeit das nach zu bauen.

Aber wozu eigentlich?

Re: Internet Speedtest

Verfasst: Mittwoch 21. Dezember 2016, 08:58
von Nr8
Hi,
ich benutze folgendes Programm um mir alle zwei Sekunden die Datenrate ausgeben zu lassen.

Code: Alles auswählen

#!/usr/bin/python
import urllib2
import urllib
import time
from datetime import datetime
import sys
import os
 

# Geschwindigkeit messen
def measure(url="http://www.speedtestx.de/testfiles/data_500mb.test", intervall=2, buf=10):
 
f = urllib2.urlopen(url)
tStart = datetime.now()
amount = 0
x = 0
 
while ((len(f.read(buf))==buf) & (x<= 60)):
                tEnd = datetime.now()
dif = (tEnd - tStart).total_seconds()

    
if (dif >= intervall):
                        
# print (time.strftime("%H:%M:%S; ")),((((amount/intervall)/1000.00)*8)/1024), "Mbit/s;"
                        amount = 0
                        tStart = datetime.now()
                        x = x + 1
        
else:
amount = amount + buf
 
try:
measure (buf=1024, intervall=2)
 
 
except  KeyboardInterrupt:
exit(0)

Sobald meine Internetverbindung abbricht erhalte ich folgenden Fehler.

Traceback (most recent call last):

File "./peedneu.py", line 43, in <module>

measure (buf=1024, intervall=2)

File "./Speedneu.py", line 18, in measure

f = urllib2.urlopen(url)

File "/usr/lib/python2.7/urllib2.py", line 154, in urlopen

return opener.open(url, data, timeout)

File "/usr/lib/python2.7/urllib2.py", line 431, in open

response = self._open(req, data)

File "/usr/lib/python2.7/urllib2.py", line 449, in _open

'_open', req)

File "/usr/lib/python2.7/urllib2.py", line 409, in _call_chain

result = func(*args)

File "/usr/lib/python2.7/urllib2.py", line 1227, in http_open

return self.do_open(httplib.HTTPConnection, req)

File "/usr/lib/python2.7/urllib2.py", line 1197, in do_open

raise URLError(err)

urllib2.URLError: <urlopen error [Errno -2] Name or service not known>



Ich würde aber gern eine Ausgabe mit 0Mbit/s haben, bis meine die Downloadrate wieder berechnet werden kann.

Kennt da irgendwer eine Lösung für mein Problem.

Re: Internet Speedtest

Verfasst: Mittwoch 21. Dezember 2016, 09:51
von BlackJack
@Nr8: Die Einrückung in dem Quelltext ist kaputt‽

Die Lösung dürfte mit der Behandlung dieser Ausnahme in Deinem Code zu tun haben.

Re: Internet Speedtest

Verfasst: Mittwoch 21. Dezember 2016, 09:57
von noisefloor
Hallo,

das bit-weise `&` in der `while` Schleife ist wohl auch falsch... da soll doch wohl an `and` hin, oder?

Gruß, noisefloor

Re: Internet Speedtest

Verfasst: Mittwoch 21. Dezember 2016, 10:17
von Nr8
Ich bekomme aber die Werte, wenn die Internetverbindung steht. Die Probleme treten nur auf, wenn kein Empfang ist.

Re: Internet Speedtest

Verfasst: Mittwoch 21. Dezember 2016, 10:46
von noisefloor
Hallo,

das das `&` an der Stelle funktioniert liegt auch nur daran, dass z.B. `True & True` das gleiche Ergebnis gibt wie `True and True`. Richtig ist bit-weise Operation trotzdem an der Stelle nicht.

Ansonsten hat BlackJack doch schon das Stichwort gegeben: Exception-Handling der betreffenden Zeile, in der der Fehler auftritt.

Gruß, noisefloor

Re: Internet Speedtest

Verfasst: Mittwoch 21. Dezember 2016, 10:51
von Nr8
Da kenne ich mich leider nicht aus.
Ich würde

try:

f = urllib2.urlopen(URL)

except ???????????

was kommt bei except hin?

Re: Internet Speedtest

Verfasst: Mittwoch 21. Dezember 2016, 11:41
von Sirius3
@Nr8: der Fehler, der auftritt, steht in der letzten Zeile: urllib2.URLError

Re: Internet Speedtest

Verfasst: Mittwoch 21. Dezember 2016, 12:10
von Nr8
Super, ihr seid die Besten!!!!!!!!!!

Re: Internet Speedtest

Verfasst: Mittwoch 21. Dezember 2016, 13:14
von Nr8
Jetzt möchte ich noch gern in der except ein bash-Script ausführen und die Internetverbindung wiederherstellen.

Re: Internet Speedtest

Verfasst: Mittwoch 21. Dezember 2016, 13:26
von BlackJack
@Nr8: Zum Ausführen von externen Programmen gibt es das `subprocess`-Modul in der Standardbibliothek.

Re: Internet Speedtest

Verfasst: Mittwoch 21. Dezember 2016, 13:43
von Nr8
danke! hat geklappt