Netzwerk - Protokollentwicklung / Grosse Datenmengen versenden



  • Was ist ein Protokoll?
    Unter "Protokoll" kann man verschiedene Synonyme finden. In der Kommunkiationstechnik könnte man es etwa so definieren:

    Ein Protokoll beschreibt, in welcher Form, wann und wie Daten übermittelt werden.

    Was heisst das jetzt in deinem Fall? Bisher hast du vermutlich einfach den Text, der angezeigt werden sollte versendet. Die gegenstelle hat das Ganze dann entgegen genommen und angezeigt. Kommunikation mit dieser Methode ist protokoll los und dazu auch noch fehleranfällig. Wenn zum Beispiel das Versenden zu lange dauert, kann es vorkommen, dass die Daten zerstümmelt ankommen und so plötzlich zum Beispiel eine Meldung auf zwei Zeilen verteilt wird.

    Abhilfe
    Abhilfe kann man damit schaffen, dass man das Format, wie daten Übertragen werden klar festlegt.
    Ein Beispiel: Ich will sicherstellen, dass das Datenpaket, das ich versende auch komplett angekommen ist, bevor ichs anzeige. Gleichzeitig will ich auch noch verhindern, dass zum Beispiel zwei Pakete versehentlich aneinander gehängt werden.
    Wie geht das nun?

    Ich denke es ist naheliegend, dass man in irgend einer Form die Länge mitübergibt. Also anstelle, dass man "Hallo" versendet, muss man hier irgendwie die Länge reinpfriemeln. Sinnvollerweise wäre das wohl am Anfang.
    nun brauchen wir noch einen Weg um die Längenangabe von den Nutzdaten zu trennen. Stell dir vor jemand versendet "002" und wir hängen einfach die Länge vorne an: 3. Das ergäbe insgesamt 3002. Wie sollen wir nun rausfinden, dass die Länge 3 ist? Sie könnte genau so gut 30, 300 oder 3002 sein. Was wäre also ein sinnvoller Weg?
    Am Besten wir trennen die Längenangabe von den Daten durch ein Zeichen, das nicht in den Längenangaben vorkommen kann. (Ich benutze meistens den ':' für die Lesbarkeit)
    Wie muss man sich das also nun vorstellen?
    Anstelle also von "Hallo" häng ich noch die Länge (5) vorne an und versende das so:

    5:Hallo
    | |||||
    | +++++-Nutzdaten 
    +-------Länge
    

    der Empfänger liest nun wieder diesen String ein, bis ein : kommt. Ist das der Fall, so hat man die Länge des folgenden String gratis und Franko in der Tasche: 5. Alles was also nach dem 5. zeichen der Kette kommt, gehört nichtmehr zu den Daten und ist entweder Datenschrott oder gehört zu einem neuen Paket.

    Gratuliere, wir haben soeben ein Protokoll definiert

    Für deinen Fall nun, würde ich 1 weiteres Zeichen anhängen, das die Art des Pakets beschreibt (also zum Beispiel Daten für deine List box, oder Daten für das Memofeld)

    Für alle die nun etwas skeptisch sind und sich wundern, dass man doch eigentlich mit TCP/IP arbeiten müsste als Protokoll noch folgender Hinweis vorweg: Dieses Protokoll agiert auf einem völlig neuen Layer und läuft über TCP/IP wie zum beispiel HTTP, FTP, etc.

    Wer mehr über die Layer der Kommunikation erfahren möchte, sollte im Google mal "OSI/ISO Referenzmodell" eintippen.

    Ich hoffe ich hab dir jetzt etwas besser geholfen. Bei fragen einfach nochmals hier posten (:

    -junix


Anmelden zum Antworten