Internet Speedtest

Sockets, TCP/IP, (XML-)RPC und ähnliche Themen gehören in dieses Forum
Campionissimo
User
Beiträge: 102
Registriert: Montag 28. März 2011, 07:50

Internet Speedtest

Beitragvon Campionissimo » Freitag 21. Oktober 2011, 08:41

Hallo Zusammen,

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

Vielen Dank
Benutzeravatar
Leonidas
Administrator
Beiträge: 16023
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Re: Internet Speedtest

Beitragvon Leonidas » Montag 24. Oktober 2011, 12:23

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".
My god, it's full of CARs! | Leonidasvoice vs Modvoice
Campionissimo
User
Beiträge: 102
Registriert: Montag 28. März 2011, 07:50

Re: Internet Speedtest

Beitragvon Campionissimo » Mittwoch 26. Oktober 2011, 19:39

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 ;(
Benutzeravatar
jens
Moderator
Beiträge: 8455
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

Re: Internet Speedtest

Beitragvon jens » Donnerstag 27. Oktober 2011, 07:11

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?

CMS in Python: http://www.pylucid.org
GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
Nr8
User
Beiträge: 42
Registriert: Mittwoch 21. Dezember 2016, 08:43

Re: Internet Speedtest

Beitragvon Nr8 » Mittwoch 21. Dezember 2016, 08:58

Hi,
ich benutze folgendes Programm um mir alle zwei Sekunden die Datenrate ausgeben zu lassen.

  1. #!/usr/bin/python
  2. import urllib2
  3. import urllib
  4. import time
  5. from datetime import datetime
  6. import sys
  7. import os
  8.  
  9.  
  10. # Geschwindigkeit messen
  11. def measure(url="http://www.speedtestx.de/testfiles/data_500mb.test", intervall=2, buf=10):
  12.  
  13. f = urllib2.urlopen(url)
  14. tStart = datetime.now()
  15. amount = 0
  16. x = 0
  17.  
  18. while ((len(f.read(buf))==buf) & (x<= 60)):
  19.                 tEnd = datetime.now()
  20. dif = (tEnd - tStart).total_seconds()
  21.  
  22.    
  23. if (dif >= intervall):
  24.                        
  25. # print (time.strftime("%H:%M:%S; ")),((((amount/intervall)/1000.00)*8)/1024), "Mbit/s;"
  26.                         amount = 0
  27.                         tStart = datetime.now()
  28.                         x = x + 1
  29.        
  30. else:
  31. amount = amount + buf
  32.  
  33. try:
  34. measure (buf=1024, intervall=2)
  35.  
  36.  
  37. except  KeyboardInterrupt:
  38. 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.
Zuletzt geändert von Anonymous am Mittwoch 21. Dezember 2016, 09:48, insgesamt 1-mal geändert.
Grund: Quelltext in Python-Codebox-Tags gesetzt.
BlackJack

Re: Internet Speedtest

Beitragvon BlackJack » Mittwoch 21. Dezember 2016, 09:51

@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.
Benutzeravatar
noisefloor
User
Beiträge: 2028
Registriert: Mittwoch 17. Oktober 2007, 21:40
Wohnort: Görgeshausen
Kontaktdaten:

Re: Internet Speedtest

Beitragvon noisefloor » Mittwoch 21. Dezember 2016, 09:57

Hallo,

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

Gruß, noisefloor
Nr8
User
Beiträge: 42
Registriert: Mittwoch 21. Dezember 2016, 08:43

Re: Internet Speedtest

Beitragvon Nr8 » Mittwoch 21. Dezember 2016, 10:17

Ich bekomme aber die Werte, wenn die Internetverbindung steht. Die Probleme treten nur auf, wenn kein Empfang ist.
Benutzeravatar
noisefloor
User
Beiträge: 2028
Registriert: Mittwoch 17. Oktober 2007, 21:40
Wohnort: Görgeshausen
Kontaktdaten:

Re: Internet Speedtest

Beitragvon noisefloor » Mittwoch 21. Dezember 2016, 10:46

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
Nr8
User
Beiträge: 42
Registriert: Mittwoch 21. Dezember 2016, 08:43

Re: Internet Speedtest

Beitragvon Nr8 » Mittwoch 21. Dezember 2016, 10:51

Da kenne ich mich leider nicht aus.
Ich würde

try:

f = urllib2.urlopen(URL)

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

was kommt bei except hin?
Sirius3
User
Beiträge: 6633
Registriert: Sonntag 21. Oktober 2012, 17:20

Re: Internet Speedtest

Beitragvon Sirius3 » Mittwoch 21. Dezember 2016, 11:41

@Nr8: der Fehler, der auftritt, steht in der letzten Zeile: urllib2.URLError
Nr8
User
Beiträge: 42
Registriert: Mittwoch 21. Dezember 2016, 08:43

Re: Internet Speedtest

Beitragvon Nr8 » Mittwoch 21. Dezember 2016, 12:10

Super, ihr seid die Besten!!!!!!!!!!
Nr8
User
Beiträge: 42
Registriert: Mittwoch 21. Dezember 2016, 08:43

Re: Internet Speedtest

Beitragvon Nr8 » Mittwoch 21. Dezember 2016, 13:14

Jetzt möchte ich noch gern in der except ein bash-Script ausführen und die Internetverbindung wiederherstellen.
BlackJack

Re: Internet Speedtest

Beitragvon BlackJack » Mittwoch 21. Dezember 2016, 13:26

@Nr8: Zum Ausführen von externen Programmen gibt es das `subprocess`-Modul in der Standardbibliothek.
Nr8
User
Beiträge: 42
Registriert: Mittwoch 21. Dezember 2016, 08:43

Re: Internet Speedtest

Beitragvon Nr8 » Mittwoch 21. Dezember 2016, 13:43

danke! hat geklappt

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder