Wlan Datendurchsatz ermitteln, wie könnte man das umsetzen?

EnricoX

Mitglied
Hallo Tutorials.de,

ich bin neu hier und habe gleich eine komische Frage an Euch. Ich würde gerne versuchen
einen kleinen Netzwerkhelfer zu programmieren ein Tool das mir den tatsächlichen Daten-
durchsatz im Wlan ermitteln kann. Bei einer kurzen Recherche im Internet bin ich zwar bereits
auf einige Programme gestoßen die das ganze für mich übernehmen könnten ich möchte
es allerdings selbst versuchen und mir so einen kleinen Netzwerkhelfer selbst zusammen
"basteln".

Da ich davon um ehrlich zu sein noch so gut wie keine Ahnung habe stehe ich derzeit
also vor einem Berg voller Fragen und habe derzeit leider noch nicht die Spur eines
Ansatzes.

Umsetzen würde ich das gerne per PHP oder wenn das nicht möglich ist vielleicht auch
mit C.

Als ich mich im Internet etwas umgesehen habe ist mir aufgefallen das die meisten dieser
Tools die Messungen mit Hilfe eines "Testservers" der auf einem separaten Testrechner
im Netz installiert ist und einem "Client" der auf dem lokalen Benutzercomputer läuft
durchführen.

Da mir ein zweiter Rechner jedoch nicht zur Verfügung steht würde ich die Messungen
nun gerne mit Hilfe der in meinem Router eingebauten Festplatte über ftp Zugriffe
messen. Ich denke da kommt es dann aber zu Messschwankungen aufgrund der
Zugriffszeiten aber das ist mir erst einmal relativ unwichtig mir geht es vorrangig
darum wie man so etwas überhaupt umsetzen könnte...

Vielleicht wisst Ihr da ja Rat, vielleicht ist das was ich da vorhabe auch gar nicht möglich
dann dürft ihr mich auch gerne auslachen, wie gesagt ich habe da leider derzeit noch so
ziemlich gar keinen Plan von.

Für jeden Hinweis bin ich Euch sehr dankbar
 
Hi EnricoX,

bei C würde ich mich jetzt schwer tun, Java scheint wohl nicht deins zu sein, aber mit php treffen wir uns "in der Mitte". Wie sind denn deine Erfahrungen im php-entwickeln?

Grundansatz, umschriebene Formulierung:

Wenn du einen Router ansprichst, kannst du diesen schonmal über seine IP-Adresse erreichen:
Ping-Code für php...

Was du dann im folgenden vom strukturellen Aufbau her brauchst, ist ein bisschen Mathematik und Statistik. Du musst in einer Schleife (mit sinnvollen Abbruchkriterien, bitte beachten) folgende Dinge definieren:
- Größe der Pakete
- Intervall
- Zeitpunkt des Anfrage
- Zeitpunkt der Antwort
- Antwortzeit (Antwort minus Anfrage, millisecs...)
und schließlich so was wie du final wissen möchtest:
- Datenmenge pro Zeit, kleinlich umrechnen, möglichst nicht runden
und das ganze unter Beachtung möglichst vieler Messwerte, wobei gilt n=Anzahl der Messwerte und je größer n, desto genauer dein Ergebnis.

Bin gespannt auf die Entwicklung, für weitere Fragen gerne da...
Gruß
Collinwood
 
Hey, das ist ja ein Ding es hat ja schon jemand geantwortet, vielen Dank Collinwood
für Deine Hinweise wie ich mein kleines Vorhaben umsetzen könnte, das klingt für
mich jetzt erst einmal ganz plausibel nur kann ich mir irgendwie noch nicht so recht
vorstellen ob man tatsächlich mit Hilfe eines Ping Signales den Datendurchsatz im
Netzwerk berechnen kann irgendwie will das mein Hirn noch nicht so ganz verstehen...

Ist es denn möglich zu dem Ping Signal ein Datenpacket mit einer von mir festgelegten
Größe zu verschicken? Und wenn ja wie sieht das denn dann mit der Antwort auf mein
Pingpacket aus ich glaube nicht das der Router mir dieses Packet dann auch mit der
gleichen Packetgröße beantwortet aber genau das ist meiner Meinung nach ja für die
Berechnung des Datendurchsatzes notwendig.

Ich sehe schon bei mir hapert es einfach total am Verständnis dieser ganzen Packet
hin und her schick Geschichte, ich frage mich wie die DSL Geschwindigkeitstest
Anbieter wie z.B.: http://www.wieistmeineip.de das ganze umsetzen denn so in etwa
müsste das ja auch bei mir im Wlan funktionieren.

Ich werde mich jetzt erst einmal versuchen in die Materie einzuarbeiten vielleicht
zündet ja dann irgendwann bei mir auch der Funke.

Sollte noch jemand ein paar Dinge für mich haben die ich mir mal zu dem Thema
anschauen könnte bin ich natürlich auch für diese Informationen sehr Dankbar!
 
Zuletzt bearbeitet:
Hi,

also mit dem Ping das könnte man schon umsetzen, du musst im Endeffekt mittels der Timestamps nur feststellen, wie lange der Standardaufruf mit 32 byte**** (glaube ich) Daten gedauert hat...
ABER:
Ich hab hier noch was besseres für dich gefunden:
http://ch2.php.net/manual/de/function.fsockopen.php
Code:
<?php
$fp = fsockopen("www.example.com", 80, $errno, $errstr, 30);
if (!$fp) {
    echo "$errstr ($errno)<br />\n";
} else {
    $out = "GET / HTTP/1.1\r\n";
    $out .= "Host: www.example.com\r\n";
    $out .= "Connection: Close\r\n\r\n";
    fwrite($fp, $out);
    while (!feof($fp)) {
        echo fgets($fp, 128);
    }
    fclose($fp);
}
?>

Kannst du auf deinem Router einen HTTP-Server laufen lassen? Ist das sowas wie ein NAS, was du da hast? Dann würd ich es nämlich folgendermaßen probieren:
1. HTTP-Server aufsetzen
2. Eine Textdatei mal so lange mit Zeichen vollklatschen bis du so 100 MB zusammen hast, diese dann einfach in dein wwwRoot- oder Htdocs-Verzeichnis vom Webserver legen
3. Verbindung über Port 80 mittels fsockopen herstellen
4. Datei mittels fgets() in einer while() (wie im code dargestellt) zeilenweise einlesen, lass den parameter der größe ruhig weg, standardmäßig liest er 1 KB (das ist die größe pro zeile). wenn du keinen bock auf viele ausgaben hast, dann setz die zahl hoch
5. Dann schreibst du dir eine Timestamp-Zuweisung VOR die schleife rechnest das Ergebnis in millisekunden um, damit wir genauere werte bekommen, ungefähr so:
Code:
$startzeit=time()*1000
6. und nach der schleife holst du dir genau wie vorher nochmal die zeit, also $schlusszeit... und machst dann $zeit=$schlusszeit-$startzeit
7. dateigröße ermitteln (am besten setzt du dir in der schleife noch so was wie $linelength, schreibst die als parameter in fgets, und machst dann $dateigroesse=$dateigroesse+$linelength;
und dann $dateigroesse/$zeit/1000, brauchste net klammern alles punktrechnung; und somit hast du den durchsatz pro sekunden, würd ich glatt behaupten.
 
Zurück