Januar 2012

 Gedankenspiel: jeder Java-Programmierer verwendet hin und wieder listening-Sockets. Öffnen, Verarbeiten, Schließen und Aufräumen der Remote-Sockets erfordert Disziplin und ein wenig Gewusst-Wie.

 Ich wollte eine Multi-Server-Multi-Client-Socket-Verwaltung schreiben, die TCP/IP-Verbindungen entgegennimmt und nach Gebrauch selbstständig aufräumt.

 

Fehruar 2012

 Erster Kontakt mit der Programmierung eines Spieleservers.

 Wie ein Spieleserver seine dutzende und dutzende-mal-dutzende Verbindungen verwaltet und sogar sein eigenes Protokoll mitbringt ist Faszination pur. Mein Bild von der Socketverwaltung wird konkret.

 

März 2012

 Eine erste Variante entsteht, die TCP/IP-Verbindungen und UDP-Anfragen verwalten kann.

 Nach mehreren Nächten ist ikrs.yucca zu ersten Testeinsätzen fähig. Module und Event-Listener lassen sich in Form von Javaklassen hinzufügen, aber ikrs.yucca beherrscht noch keine Sprache.

 

April 2012

 Noch immer getrieben von der Faszination, wie ein Spieleserver mit seinen Clients spricht, musste ein klares, leicht zu parsendes, sauberes und gut dokumentiertes Protokoll für den Transport der Nutzdaten herhalten. Die Erfahrung sagt mir, dass das neu-erfundene Rad immer schlechter ist als das etablierte; also musste etwas Bestehendes herhalten. Ich entschied mich für ein 32 Jahre altes Rad: HTTP.

 

Juni 2012

 Die Implementierung der Schnittstellen, rekursiver Fehlerbehandlung, einem einfachen Typsystem, dem Parser und sauberem Logging waren umfangreicher als erwartet und schon nach einem Monat war das HTTP-Modul ikrs.http für den Yucca-Server (so nannte ich ihn nun einfach) bereits viel größer als ikrs.yucca selbst. Ich will nicht wissen, wie viele Hektoliter Kaffee die Apache-Programmierer damals (also vor dem Krieg) verbraucht haben.

 

Oktober 2012

ikrs.http ist erschreckend groß geworden und ich musste mir klare Grenzen setzen, um nicht in Themen abzudriften, die nicht zu RFC 2616 gehören.

Es spricht HTTP/1.1 in Grundzügen (GET und POST), versteht Basic- und Digest-Authentifizierung, hat eine CGI/1.1-Schnittstelle und kann mit PHP reden, erkennt die MIME-Types/Content-Types der angeforderten Dateien, kann multipart/formdata interpretieren, elementare htaccess-Anweisungen ausführen und, achja, den Inhalt eines Verzeichnisses anzeigen.