Netzwerk Protokoll mit Header schreiben

  • VB.NET
  • .NET (FX) 4.0

Es gibt 2 Antworten in diesem Thema. Der letzte Beitrag () ist von J.Herbrich.

    Netzwerk Protokoll mit Header schreiben

    Hallo,

    Ich brauche ein Generisches Netzwerk Protokoll was sich nahe zu beliebig erweitern lässt.Nun habe ich das LAND-Protokoll sagen wir es mal so ein wenig verhuntzt. Stichwort Header.

    Das gesamte Protokoll sieht z.Zt. so aus: <vier stellige Zahl als Dienst Kennung>|<JSON-Payload>, jetzt brauche ich alerdings noch einige weitere Details im Header weshalb die Frage ist wie ich es abwärts kompatibel umschreiben kann. Ich würde gerne eure meunung zum jetzigen vorschlag hören.

    Da der Server jede ReadLine Abfrage in ein Arrray einliest mit der String.Split Methode würde ich die lenge des Arraeys abfragen und dann endscheiden. Wen die länge 2 (1) ist, dann ist auf 0 (weil Nullbasierender Index) die Alte Dienst Kennung wie gehabt. Wen das Array 3 elemente hat (wo von feld 1 der Header, Feld 2 der Payload ist) dann ist es die neue Version des Protokolls.

    Oder Altanativ lasse ich beim Connect ein Inzialen Handshake laufen der beim Verbinden durchgeführt wird, bleibt dieser aus (z.Zt. wird nur ein Login mitgeschickt) dann geht der Server weiter hin von alten Protokoll aus.

    Würde eure vorschläge gerne mal hören.

    LG, J.Herbrich
    ich kenne das Land-Protokoll nicht.
    Unbehagen würde mir auch das bereiten:

    J.Herbrich schrieb:

    Da der Server jede ReadLine Abfrage in ein Arrray einliest mit der String.Split...
    Imo sollte Netzwerk-Kommunikation gar nix mit Strings zu tun haben.
    Es sind Streams, und das ist eine besondere Art, Bytes zu transportieren.

    guggemol TcpKommunikation + Networkstream
    Der kann Texte, Dateien, Bilder, BroadCast, Responsive, was wolle.
    Ja, es giebt ja zwei Arten von Netzwerk Protokollen,

    Testbasierende und Binäre, HTTP basiert ja auch auf Text. Und RDP, SMB, usw... das sind alles Binär Protokolle.

    Der Grund für die Wahl Text ist dass alle Klassen einfach JSON(De)-Serialisiert werden und danach endsprechend verschickt werden.

    LG, J.Herbrich