Eigene Client-Server-Applikationen mit Perl und NetServer::Generic
Japanisch-Paukerin
Eigene Clients und eigene Server sind in Perl schnell programmiert - ohne mit den Details der Netzwerkprotokolle zu kämpfen. (Michael Schilli)
Eigene Clients und eigene Server sind in Perl schnell programmiert - ohne mit den Details der Netzwerkprotokolle zu kämpfen. (Michael Schilli)
Haben Sie schon einmal den Wunsch verspürt, einen eigenen Server-Dienst zu schreiben? Mit Perl ist das kein Problem, das Modul »NetServer::Generic« hilft Ihnen. Bevor wir loslegen, sehen wir uns aber erst einmal an, was bei etablierten Diensten unter der Haube passiert:
»ftp ftp.microsoft.com Connected to ftp.microsoft.com. 220 Microsoft FTP Service ... Name (ftp.microsoft.com:ich):
Das Client-Programm »ftp« öffnet auf der lokalen Maschine einen Netzwerk-Socket, kontaktiert den gewünschten FTP-Server und fängt eine Konversation mit ihm an. Der FTP-Daemon sendet Fragen (etwa: Was ist Ihr Username?), nimmt Antworten oder neue Wünsche des Clients entgegen und reagiert darauf wieder mit neuen Ausgaben.
Eine derartige Client-Server-Applikation benötigt zweierlei:
Um mit einem solchen Service zu kommunizieren, ist nicht immer ein spezialisierter Client nötig. Oft genügt ein generisches Programm wie Telnet. Mit Hostname und Portnummer aufgerufen leitet es die Eingaben an den Server weiter und gibt dessen Antworten aus:
»telnet ftp.microsoft.com 21 Trying 207.46.133.140... Connected to ftp.microsoft.com. Escape character is '^]'. 220 ... Microsoft FTP Service »LIST 530 Please login with USER and PASS. »QUIT 221 Thank You for using Microsoft Products Connection closed by foreign host.
Das Kommando »LIST« wollte der FTP-Server nicht ausführen. Er verlangte, dass wir uns vorher mit den Kommandos »USER« und »PASS« authentifizieren. Ein FTP-Client würde jetzt den Benutzernamen abfragen und ihn mit »USER bill« an den Server senden, danach das Passwort mit »PASS ...« nachreichen - schon wäre er als »bill« eingeloggt. Beide Kommandos könnten wir auch mit Telnet absenden, stattdessen verabschieden wir uns: »QUIT«. Der Server bedankt sich freundlich und beendet die Verbindung. So funktioniert das bei vielen Protokollen - und sogar Microsoft muss sich an die Spielregeln halten.
Wir wollen uns aber nicht auf vorhandene Dienste beschränken, sondern das Internet um einen neuen simplen Service bereichern. Wie wäre es mit einem Japanisch-Pauker? Der Pauker wird mit Deutsch-Japanisch-Wortlisten gefüttert und soll die Begriffe in Form eines Quiz abfragen. Aufgeteilt ist die Lernhilfe in einen Server und einen Client, beide in Perl geschrieben.
Das Skript »jap.pl« (Listing 1) simuliert offline, wie später der Server funktionieren wird:
*** Welcome to jap 1.0 *** »add Vater - chichi »add Mutter - haha »quiz Mutter? (Hit Enter) haha Vater? (Hit Enter) chichi End of quiz. »exit *** Thanks for using jap.
Mit dem »add«-Kommando lernt das Programm neue Kombinationen, den deutschen und den japanischen Ausdruck erwartet es in einer Zeile, durch einen Gedankenstrich voneinander getrennt. Die gelernten Begriffe speichert es persistent in einer Datenbank, so dass es sie auch beim nächsten Aufruf noch kennt.
Das Kommando »quiz« geht in zufälliger Reihenfolge durch alle Einträge in der Datenbank und gibt jeweils den deutschen Begriff aus, gefolgt von einem Fragezeichen. Es wartet dann, bis der Benutzer die Eingabetaste drückt, und gibt schließlich die japanische Lösung aus. Darauf folgt die nächste Quizfrage in Deutsch. Auf das Kommando »exit« hin bricht der Pauker die Verbindung ab. Weitere, oben nicht gezeigte Funktionen sind »help« (zeigt alle verfügbaren Kommandos) und »dump« (gibt alles bisher Gelernte zeilenweise aus).
Alle Rezensionen aus dem Linux-Magazin
Im Insecurity Bulletin widmet sich Mark Vogelsberger aktuellen Sicherheitslücken sowie Hintergründen und Security-Grundlagen. mehr...