Backtracking
Graphentheorie
Künstliche Intelligenz
Kombinatorik
Kompressions-Algorithmen
Kryptographie
Mathematisches
Sortier-Algorithmen
Datenstrukturen
Formale Sprachen, Compiler etc.
Prolog
TCP/IP Sockets
Datenströme, XML, etc.
ClientSocket.zip (13 KB)
Eine Klasse, die einen Socket für
Clients verwaltet. Das Interface ist sehr simpel, wie man an den anderen Programmen hier sehen kann (an denen
ich insgesamt nichtmal eine Woche gearbeitet habe). Besonders
hervorzuheben ist die Möglichkeit, den Socket aktiv zu machen - d.h. dass er Callback-Funktionen aufrufen kann, sobald Daten eintreffen. Besonders schön ist dabei, dass
man der Callback-Funktion eine andere Funktion vorschalten kann (indem man die Klasse ableitet und in der abgeleiteten
Klasse die Methode InternalOnRecieve überschreibt) wodurch man protokoll-spezifische Nachrichten abfangen kann (wie die PING-PONG Nachrichten
im IRC Netz)
irc_client.zip (34 KB)
Ein Client für Internet
Relay Chat (IRC). Das ganze ist sauber in eine Klasse gekapselt, wodurch man die Funktionalität
sehr einfach in beliebige Programme einbauen kann. Es ist sehr einfach, über die Interfaces und
Callback-Funktionen Nachrichten zu verschicken und zu empfangen, wie man am sehr kurzen Hauptprogramm
sehen kann. Die PINGs werden übrigens automatisch beantwortet.
Sehr interessant ist die Möglichkeit, das Hauptprogramm über named pipes an die Standard-Ströme eines anderen Programms anzubinden.
pipe_mail.zip (41 KB)
Ein Programm, mit dem man E-Mails über SMTP Server verschicken kann. Das ganze ist auch wieder sauber in eine Klasse gekapselt,
wodurch man die Funktionalität wieder sehr einfach in beliebige Programme einbauen kann. Die Klasse
unterstützt mehrere Empfänger, Blindkopien und Dateianhänge. Zur Authentifizierungs wird derzeit nur das
(unsichere) LOGIN unterstützt,
was ich aber bald auf CRAM-MD5 ausweiten will.
telnet_client.zip (22 KB)
Ein telnet client. Man beachte wie
wenig code dafür nur nötig ist (7 Zeilen). Telnet ist zwar ein sehr primitives system, die Clients
sind aber durchaus brauchbar um die Schnittstellen von anderen Protokollen kennenzulernen, indem
man einfach mit einem Telnet client zu einem Server verbindet und die Messages schickt, wie sie
in den verschiedenen RFCs
spezifiziert sind - damit habe ich z.B. mal eine E-Mail verschickt und eine Datei heruntergeladen.
Das ist zwar extrem umständlich, aber wie gesagt lernt man dabei die Protokolle kennen.