Client, Server Applikation, C#

Nov 30, 2016 at 11:39 AM
TEXT

Hallo Konrad,
kannst Du kurz hierzu noch was sagen.
Dein Beispiel ist gut, aber eben zu komplex für Einsteiger.

Wenn ich das Protokoll definieren kann, ja dann könnte man es in einer festen Struktur machen.
Wenn es vorgegeben ist, dann eben nicht.
Abschließend vielleicht noch, die Vorgehensweise wäre so schon richtig.
Jetzt nur mal Länge mit 4 Bytes und dann die Message.
  • Funktion A - Länge, genau mit 4 Bytes einlesen
  • Funktion B - Länge gemäß vom Bitconverter ermittelte Länge einlesen
  • Funktion C - Message, die auswerten und ggf. an die Empfängerklasse senden.
Viele Grüße Martin
Coordinator
Jan 10 at 6:21 AM
Hallo Martin,

sorry für die späte Antwort.

Das ganze Thema Kommunikation über Sockets ist leider nicht ganz trivial. Das Auswerten des Protokolls und so habe ich halt als solches noch nicht behandelt. Wie das für ein Textbasiertes Protokoll aussehen könnte, sieht man evtl. im draft Bereich an der unfertigen IRC Library. Das Message Parsing ist aber - so ich micht recht erinnere - komplett. IRC hat halt ein Format, das Nachrichten getrennt durch ein Newline versendet und der Aufbau ist dann immer, dass Werte durch Spaces getrennt sind. Der erste Wert ist der Befehl es sei denn, er fängt mit einem ":" (?? In dem RFC nachlesen. Ist recht lange her) an, dann wäre es ein Absender oder Empfänger oder so und der Befehl wäre der zweite Wert. Folgende Werte sind Parameter zu dem Befehl es sei denn, ein Wert fängt mit einem : an. In dem Fall wäre der ganze Rest zusammen ein Argument.

Evtl. hilft Dir das etwas weiter.

Bezüglich der Library wäre noch denkbar, dass man hier ein universelles Protokoll aufbauen würde. Das ginge dann etwas in Richtung WCF, Dies ist aber in meinen Augen schlicht unnötig, denn wer sowas braucht, der greift dann doch direkt zu WCF und hat dann eine Library, die deutlich mehr bietet wie die Nutzung verschiedenster "Kommunikationsformen" und vieler Konfigurationsmöglichkeiten (So kann man da vieles über ein Config-File machen, so dass man als Entwickler vieles nicht festlegen muss. Wenn man die Config aus dem Configfile bei WCF nimmt, dann hat der Admin sehr weitgehende Möglichkeiten.

Mir ging es bei dem Code in erster Linie nur um die Problematik Socket Kommunikation. Da geht es dann vor allem um Dinge wie Verbindung aufbauen und dann mit einem Thread auslesen. Im MSDN Forum sah man leider zu oft, dass es hier Probleme zu geben scheint.

Viele Grüße,

Konrad