Laden...

ChatDemo

Erstellt von tom-essen vor 13 Jahren Letzter Beitrag vor 13 Jahren 2.224 Views
tom-essen Themenstarter:in
1.820 Beiträge seit 2005
vor 13 Jahren
ChatDemo

Hallo!

Hab' mir eine Netzwerk-Komponente geschrieben, mit welcher ich u.a. ein Client-/Server-System aufbauen kann, wobei die Nachrichten XML-serialisiert übertragen werden. Ist zwar nicht der effizienteste Weg aber dafür recht flexibel.

Die Nachrichten bestehen dabei aus serialisierbaren Klassen, beim Empfang einer solchen Nachricht kann eine separate Methode aufgerufen werden (dazu muss der Typ lediglich einmalig z.B. beim Start zusammen mit der Methode registriert werden).

Zur Verdeutlichung habe ich mal eine ChatDemo geschrieben, die sich im Anhang findet. Die Zip-Datei besteht aus drei weiteren Zip-Dateien:
*Dem Server: Dieser kann pro Rechner nur einmal gestartet werden (beim ersten Start wird vermutlich auf die Firewall meckern). *Dem Client: Dieser kann beliebig oft pro Rechner gestartet werden (zum testen) *Der Sourcecode der Demo

Einrichtung:
Sowohl im Server als auch im Client finden sich die Einstellungen über "Programm | Einstellungen". Beim Server reicht die Port-Nummer (Standard ist 13579). Mit der Auto-Start-Einstellung ist der Server beim nächsten Start automatisch auf Horch-Modus, ansonsten startet und stopt man über die Menüpunkte unterhalb von "Server".
Die appconfig-Datei mit den Einstellungen befindet sich in %AppData%\Roaming\Computopia GbR Essen\ChatDemoServer.

Im Client kann man in den Einstellungen die Angaben für den Benutzer leer lassen, diese können später automatisch beim erstellen eines neuen Benutzers gesetzt werden. Die Einstellungen des Clients werden übrigens im Programmverzeichnis gespeichert, damit man mehrere Instanzen mit unterschiedlichen Benutzern starten kann.

Zum Ablauf:

  1. Server starten
  2. Client starten
  3. Benutzer erstellen, bei Erfolg kann automatisch angemeldet werden
  4. Ggf. die Punkte 2 und 3 wiederholen
  5. Nach der zweiten Anmeldung sollten bereits die entsprechenden Benutzer in den Clients angezeigt werden. Ein Doppelklick öffnet das Chat-Fenster.

Mit "Programm | Protokoll anzeigen" kriegt man einen kleinen Einblick, was so im Hintergrund passiert und wo ggf. ein Problem ist, die Logs werden auch als Datei gespeichert (unterhalb von %AppData%\Roaming, wobei das eigentlich in Local sollte, wen's stört, der kann's vorläufig in den Einstellungen ändern).

Langfristig möchte ich einen Großteil in die ChatDemo-Assembly verschieben, damit die Funktionalität einfach und schnell in andere Programme integriert werden kann (ggf. noch eine Zusatz-Assembly für die UI), wenn man sowas in einer Intranet-Anwendung benötigt.

Zum Code:
Zum Kompilieren muss man erstmal die Verweise auf TD.Additional.* anpassen, geht wahrscheinlich am einfachsten, wenn man die TD.*-Verweise einfach löscht und dann neue Verweise über die Mehrfachauswahl einfügt.

Ich hoffe, der Code ist einigermaßen übersichtlich (sind ja nun nicht alle ein Freund von Regions 🙂) und verständlich, hab' nicht allzuviel dokumentiert.

Wenn ich noch Zeit finde, werde ich den Code noch etwas dokumentieren und evtl. etwas zum Aufbau schreiben.

Nobody is perfect. I'm sad, i'm not nobody 🙁