Dieses Projekt ist aus der Idee entstanden, ein Set an Klassen für einen einfachen TCP/IP basierten Nachrichtenaustausch mit den neusten Mitteln des .Net Frameworks zu machen. Hierbei werden verschiedene Formate dieser Nachrichten unterstützt, z. B. Erkennung einer Nachricht auf Basis eines Ende-Kennzeichens oder einer festen Länge. Ursprünglich ganz ohne GUI gedacht, habe ich dann doch eine auf dem Framework Avalonia basierte Oberfläche erstellt. Somit kann das Programm nicht nur auf Windows, sondern auch auf Linux oder MacOS verwendet werden. Daneben ist es ein gutes Beispiel dafür, wie vergleichbare Tools mit Avalonia entwickelt werden können. Der Quellcode befindet sich auf GitHub unter [1] und steht unter der freizügigen MIT-Lizenz.
Inhaltsverzeichnis
Wesentliche Funktionen
Die jeweils aktuelle Version des Programms kann direkt vom Github-Projekt [1] aus runtergeladen werden. Es ist so gestaltet, dass am Zielsystem keine Installation notwendig ist. Unter der Haube ist es mit .Net Core (bzw. bald .Net 5) umgesetzt und erzeugt im publish Script eine ausführbare Datei je Betriebssystem und enthält dabei alle notwendigen Abhängigkeiten (inkl. dem Framework). Die Plattformunabhängigkeit wird durch .Net Core und dem Framework Avalonia (Siehe [2]) erreicht.
Von den Funktionen her hätte ich mich auf folgende Themen fokussiert:
- Unterstützung Passiv/Aktiv: Warten auf Verbindungsanfrage von außen auf bestimmten Port / Aufbau einer Verbindung zu einer fremden IP-Adresse und Port
- Einzelne Verbindung: Trifft eine neue Verbindungsanfrage an einem Port ein, so wird die vorherige als ungültig erklärt
- Timeouts: Trifft über eine gewisse Zeitspanne keine Nachricht von der Gegenseite ein, so wird die Verbindung automatisch abgebaut und ein neuer Verbindungsaufbau versucht
- Flexible Nachrichtenerkennung: Die Logik zur Erkennung einer Nachricht kann flexibel konfiguriert werden. Z. B. Erkennung einer Nachricht auf Basis eines Ende-Kennzeichens oder einer festen Länge.
- Automatischer Reconnect: Sobald ein Verbindungsprofil gestartet wurde, kümmert es sich automatisch um den Verbindungsaufbau und um ggf. notwendige reconnects.
In Summe handelt es sich um ein Programm, mit dem es relativ einfach möglich ist, einfache nachrichtenbasierte TCP-/IP Protokolle mit anderen Programmen oder Hardware-Geräten zu testen. Hier noch ein paar Screenshots:
Bibliothek
Neben der GUI existiert ebenso ein Nuget-Packet [3], welche obige Logik in Form einer .Net Bibliothek bündelt. Derzeit ist es verfügbar für .Net Standard 2.0 und .Net Standard 2.1. Die API ist in kurzen Sätzen direkt auf der Github-Seite beschrieben.
Downloads
- Aktuelle Releases werden auf GitHub bereitgstellt
https://github.com/RolandKoenig/MessageCommunicator/releases - Link zur Installation auf Windows über den Microsoft Store
https://apps.microsoft.com/store/detail/message-communicator/9MZ890VT8FMC?hl=es-ar&gl=ar
Verweise
- Repository von MessageCommunicator auf GitHub
https://github.com/RolandKoenig/MessageCommunicator - Allgemeiner Artikel zu Avalonia
https://www.rolandk.de/wp-posts/2020/07/cross-platform-gui-mit-c-und-avalonia/ - Das Nuget-Paket, welches die Kern-Funktionalität von MessageCommunicator enthält
https://www.nuget.org/packages/MessageCommunicator
Ebenfalls interessant
- .Net 5 App Trimming am Beispiel MessageCommunicator
https://www.rolandk.de/wp-posts/2020/12/net-5-app-trimming-am-beispiel-messagecommunicator/ - Custom Window Chrome mit Avalonia
https://www.rolandk.de/wp-posts/2021/05/custom-window-chrome-mit-avalonia/ - Markdown-Dokumente mit Avalonia rendern
https://www.rolandk.de/wp-posts/2021/08/markdown-dokumente-mit-avalonia-rendern/