Applikation zur pure.box:
Einfacher TCP Echo-Server mit PHP
Ausführung eines PHP-Skriptes bei Datenempfang an einem TCP-Port.
Die pure.box ist in der Lage bei Datenempfang (Übertragung per TCP oder
UDP) mit dem Aufruf eines PHP-Skriptes zu reagieren. Die empfangenen Daten können
via PHP eingelesen und weiterverarbeitet werden (z.B. Antwort an Datenquelle,
Weitergabe über das Netzwerk oder Speicherung in boxinterner Datenbank).
Der PHP-Interpreter arbeitet hier ausschließlich "unter der Haube",
es wird keine klassische Ausgabe in Form einer Webseite generiert. Diese Funktionalität
ermöglicht die Realisierung einfacher Serveranwendungen, lediglich mit
dem Einsatz von Webtechnik.
Aufgabenstellung
Zum Testen einer Netzwerkverbindung soll auf der pure.box ein auf den TCP-Port
8000 lauschender Echo-Server eingerichtet werden. An diesen Port gesendete Daten
sollen anschließend unverändert an die Quelle retourniert werden.
Die für die Umsetzung dieses Beispiels benötigte PHP-Datei echo.php
kann hier heruntergeladen werden.
Konfiguration der pure.box
Speichern Sie die Datei echo.php per FTP oder über die SMB-Freigabe
im Ordner programs auf der pure.box ab. Anschließend sind folgende
Konfigurationsschritte notwendig:
|
Rufen Sie die Startseite der pure.box durch
Eingabe der IP-Adresse in der Adresszeile Ihres Browsers auf.
|
 |
|
Wählen Sie Anmelden im Menübaum und
loggen Sie sich über den aufgerufenen Dialog mit Ihrem Passwort an.
|
 |
|
Navigieren Sie auf die Seite Home >> Konfiguration
>> Eigene Dateien. Klicken Sie in der Dateiübersicht auf
den Ordner programs. Die Datei echo.php wird sichtbar.
|
 |
|
Ein Klick auf das Icon Dateieigenschaften bearbeiten
(links neben echo.php) öffnet den Bearbeiten-Dialog.
|
 |
|
Aktivieren Sie die Option Ereignisgesteuert.
Wählen Sie TCP und setzen Sie Port auf 8000. Übernehmen
Sie die Änderungen mit Speichern... Fertig!
|
 |
Werden jetzt Daten an den TCP-Port 8000 der pure.box gesendet, werden diese
an den Versender zurückgeschickt. Voraussetzung für die Retour ist der Empfang
eines Zeilenumbruchs (LF / Return-Taste) als Endezeichen. Allgemein muss beachtet
werden, dass die Ausführung des PHP-Interpreters nach zwei Minuten automatisch
beendet wird. Die programmierte Aktion sollte daher in kürzerer Zeit abarbeitbar
sein.
Der Quelltext
In den ersten beiden Zeilen wird der Standard-Input zum Lesen und der Standard-Output
zum Schreiben von Daten geöffnet.
$in = fopen('php://stdin', 'r');
$out = fopen('php://stdout', 'w');
In einer Schleife werden die ankommenden Daten zeichenweise engelesen und der
String-Variablen $input angehängt. Die Schleife wird verlassen,
wenn ein Zeilenumbruch (Line Feed, ASCII-Tabelle: 10) erkannt wird.
$input = '';
do {
$input .= fread($in, 1);
} while(substr($input, -1, 1) != chr(10));
Nach dem Empfang wird der eingelesene String über den Standard-Output
wieder an die initiierende Datenquelle zurück gesendet.
fwrite($out, $input);
Abschließend wird sowohl der Standard-Input, wie auch der Standard-Output
geschlossen.
fclose($in);
fclose($out);
Das PHP-Skript ist hiermit vollständig abgearbeitet und wird verlassen.
Bei erneutem Empfang von Daten wird das Skript neu gestartet und läuft
wieder wie oben beschrieben ab.
Fazit
Einfache Serveranwendungen können mit der pure.box lediglich mit der Kenntniss
von PHP umgesetzt werden. Die Serverfunktionalität ist dabei bereits Bestandteil
der pure.box. Es muss nur noch die beim Empfang von Daten auszuführende
Aktion programmiert werden.
|
vorherige Applikation
|
|
|
nächste Applikation
|
|