\hypertarget{kommunikationsprotokoll}{\chapter{Kommunikationsprotokoll}}
\begin{quotation}\begin{flushright}{\it 
Kommunikationswissenschaft - \\
die Lehre von den Missverständnissen.\\
}
Markus M. Ronner\\
{\glqq}Treffende Pointen zu Geld und Geist{\grqq}
\end{flushright}\end{quotation}

\section{Events}
Die Kommunikation zwischen Client und Server wird über Events gesteuert. Es
gibt die folgenden sieben Events: Login, Logout, Fenster erzeugen, Fenster
schließen, Fenster zerstören, Synchronisation, Tastendruck.
\section{Login und Logout}
Jeder Client, der eine Session aufbauen will, sendet dem Server ein
Login-Event. Die Anfrage beinhaltet den Host, auf den zugegriffen werden soll,
den Benutzernamen und das Passwort. Der Server beantwortet bei erfolgreicher
Anmeldung mit einer Session-ID, andernfalls mit einem der folgenden negativen
Fehlercodes: -1 bei falschem Benutzername oder Passwort, -2, wenn keine
Verbindung zum angegebenen Host aufgebaut werden kann.

Die Session-ID muss bei jeder weiteren Anfrage mitgesendet werden und stellt
die Authentität sicher.

Das Logout-Event wird beim Beenden der Session durch den Client gesendet und
enthält lediglich die Session-ID.
\section{Fenster erzeugen, schließen, und zerstören}
Beim Erstellen eines neuen Fensters sendet der Client eine Anfrage. Er erhält
bei erfolgreicher Erzeugung eines neuen Fensters dessen ID zurück, ansonsten
eine -1.

Die Fenster-ID muss bei jeder weiteren Anfrage, die sich auf ein Fenster
bezieht, mitgesendet werden.

Beim Schließen wird das Fenster {\glqq}gebeten{\grqq} sich zu beenden. Bei Erfolg wird
eine 1, ansonsten eine 0 zurückgegeben. Ähnlich arbeitet das Zerstören, dabei
wird das Fenster jedoch gewaltvoll beendet und ein Rückgabewert entfällt.
\section{Synchronisation und Tastendruck}
Bei der Synchronisation wird der Inhalt des Fensters in Form eines
XML-Dokuments zurückgegeben. Optional kann eine neue Fenstergröße angegeben
werden.

Beim Tastendruck werden zusätzlich bei der Anfrage eine oder mehrere Tasten
übertragen.
