Netzwerkprotokoll
-
Hallo!
Ich arbeite derzeit an einem Projekt, das nun mit einem Server kommunizieren soll.
Die Frage für mich ist jetzt nur, wie ich das Protokoll des Servers implementieren soll. Ich will jetzt hier keine Komplettimplementation :P, sondern nur einen Ratschlag, wie man sowas generell angeht.
Ich kenne bisher leider nur zwei Protokolle: FTP und IRC.
IRC habe ich aber schon nicht mehr ganz im Kopf

Das Prinzip läuft bei mir so ab.
Der Server bekommt ab und an mal so einen Befehl rein, den er verarbeiten soll. Wenn er fertig ist, soll er das dem Client Programm mitteilen. Beim Client läuft das im Endeffekt genauso. Nachricht kommt -> Verarbeiten -> Mitteilen.
Gibt es da irgendwelche bekannten Ansätze etc. oder soll das ganze über 10.000 verschiedene Statuscodes laufen (Das war jetzt meine Idee).
Für irgendwelche Vorschläge bzgl. der Problematik wäre ich sehr dankbar.
-
Zeichne dir das Ganze mal als Zustandsdiagramm auf, je eins fuer den Server und eins fuer den Client: in welchem Zustand startet der Client/der Server, bei welchen Zustaenden wechselt er in welchen anderen Zustand, .... Und dann ueberleg dir, was in jedem Zustand passiert, wenn etwas "unerwartetes" passiert (z. B. Verbindungsabbruch), und ueberleg dir, was dann passieren soll.
Aus so einem Diagramm kannst du dann dein Protokoll ableiten. Bei dir klingt das Ganze aber relativ einfach, ich glaub es ist fast schon zuviel Aufwand, dafuer richtig formal ein Protokoll aufzustellen. Du hast dein Protokoll ja quasi schon hier im Thread beschrieben: Daten senden -> Daten verarbeiten -> Daten zuruecksenden. Wenn jeder Client eine eigene Verbindung zum Server hat, ist das ein ganz einfacher Dialog, wo sowohl Client als auch Server immer wissen, was sie als naechstes fuer ein Packet zu erwarten haben. Evlt. kannst du in jedem Packet noch eine Identifizierung mitgeben, damit auch so Spezialpackete wie "ich trenn die Verbindung jetzt" abgearbeitet werden koennen (wenn du sowas ueberhaupt brauchst, evtl. wissen ja beide (client & server) bereits, wann die Kommunikation fertig ist und machen einfach die Verbindung zu.