[C#] [OpenSource] RemoteLib - Eine Library für Client-Server Kommunikationen

    • Release

    Es gibt 11 Antworten in diesem Thema. Der letzte Beitrag () ist von Trudi.

      [C#] [OpenSource] RemoteLib - Eine Library für Client-Server Kommunikationen

      Name des Programms:
      RemoteLib

      Beschreibung:
      RemoteLib ist eine Bibliothek die einem die grundlegenden Funktionen von einer Client-Server Verbindung abnimmt und darüberhinaus Klassen für das Komprimieren von Daten bereitstellt. In Planung ist ein erweiterter Server, der auf Packeten basiert (z.B. StringPackage, FilePackage, ...) und ein Cryptography-Namespace, der die im .Net Framework vorhanden Key-Agreement Protokolle, Symmetrische Verschlüsselungen und Daten-Signierungen kapselt und bereitstellt.

      Screenshot(s):
      Da ich kein Programm zum Erstellen von Klassendiagrammen mit C# gefunden habe und mir Visual Studio Ultimate nicht leisten kann, ist dieses leider nicht vorhanden.

      Verwendete Programmiersprache und IDE:
      Microsoft Visual C# 2010 Express

      Systemanforderungen:
      .Net Framework 4.0

      Download:
      1. Siehe Anhang, 13kB
      2. GitHub Repository

      Lizenz/Weitergabe:
      Open Source

      Verwendung der Lib

      C-Quellcode

      1. // Serverseitig
      2. Server server = new Server(port);
      3. server.Start();
      4. // Derzeit vorhandene Events
      5. server.ClientConnected += [...]
      6. server.ClientDisconnected += [...]


      C-Quellcode

      1. // Clientseitig
      2. Client client = new Client();
      3. client.Connect("localhost", port);
      4. // ...
      5. client.DataReceived += [...]
      6. client.Send(data);


      Changelog


      Über Feedback und Vorschläge für weitere Funktionen würde ich mich sehr freuen und Fehler können hier oder über mein GitHub-Repository gemeldet werden. :)

      MfG,
      Trudi
      Dateien

      Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „Trudi“ ()

      Hallo EDR,

      Versuche mal beim Beenden vom Programm Server.Stop() oder Server.Dispose() aufzurufen, dann sollte es funktionieren. :)
      Das ganze sollte auch auf einem Rechner laufen, das RemoteLib-Testing Projekt läuft ja auch nur auf einem Rechner.

      Habe den Sourcecode auch im Anhang hochgeladen.

      Edit:
      Habe es gerade getestet, wenn du den TcpListener z.B. auf Port 80 startest und der ist schon belegt, dann tritt die Aufnahme auf :)
      Welcher Port belegt ist und welcher nicht, kann man mit cmd> netstat -a prüfen.

      MfG

      Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Trudi“ ()

      jut, ich habe jetzt nicht händisch eine 2. Programm-Instanz gestartet, von der ich erwartet hätte, die kann ich iwie als Client laufen lassen - das ist wohl nicht so konzipiert.

      Sondern ich hab einfach so gestartet, und sendstring eingetippt in den Server.


      Ist ja erfreulich, dasser was antwortet, aber wie sehe ich nun, dass wirklich was gesendet wurde?
      Also es muß ja iwo wieder herauskommen :wacko:


      Dafür müsste man doch 2 Konsolen offen haben, wenn man das mit Konsole macht.
      Hi,
      links vor jeder Zeile ist ein Prefix, entweder [Server], [Client] oder [Program].
      Überall wo Server davor steht, da wurde Serverseitig etwas gemacht, genauso siehts mit Client aus.
      Zweimal steht da [Program] davor, das habe ich falsch beschriftet (bei Sending 8 bytes to 2 clients und Compressing 8 bytes to 28 bytes) und ist bereits gefixt (in der nächsten Version).

      Mir ist leider nicht bekannt, wie man ein zweites Konsolen-Fenster öffnet, sonst hätte ich das gerade eingebaut.
      Werde eventuell noch ein umfangreicheres Testing-Projekt machen, aber erstmal kommt ein erweiterter Server. :)

      Danke für das Testen :)

      MfG
      vlt. kannst du ja ein Winforms-Projekt zufügen, welches dann die Clients repräsentiert.
      Bei VersuchsChat habich Server + Clients im selben Projekt implementiert, das hat den Nachteil, das der Server auch eine Winforms-Anwendung ist, wasser im ProduktivBetrieb evtl. eher nicht sein soll. bei Clients ist Winforms ja sinnvoll, der User will ja nicht mit eine Konsole rumfummeln.

      Aber 2 getrennte Projekte, eins davon Konsole, scheint mir ein praktikabler Ansatz für eine plausible Test-Anwendung.

      Plausibel scheint mir son Teil erst, wenn ich im einen Client was eingeben kann, und kommt im Server oder im anneren Client wieder raus.

      Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „ErfinderDesRades“ ()

      Dein VersuchsChat war auch Inspiration für mein Projekt, danke nochmal dafür.
      Mit dem Testing-Projekt geht es mir auch erstmal darum, dass alles soweit funktioniert und die Daten korrekt übertragen werden.
      Danke auch für den Vorschlag, werde das heute Abend vielleicht umsetzen.

      MfG
      Hey,

      hier nochmal ein kleines Update zu Build 2 (Version 0.0.0.2). Folgende Dinge habe ich verändert:
      • Das Client.DataSend-Event ist eher sinnlos und wurde entfernt.
      • Zu Client.Send() und Client.Connect() wurde ein Parameter bool block hinzugefügt, der angibt ob die Funktion blockiert oder nicht
      • Das Beispiel-Projekt wurde entfernt und in Unit-Tests aufgeteilt. An einem richtigen Beispiel-Projekt bin ich gerade am arbeiten :)
      • Der GZipDataModifier und DeflateDataModifier haben noch ein ICompressor-Interface bekommen
      • Bei dem Server.ClientConnected-Event kann man das Verbinden nicht mehr canceln. Dazu muss man seinen eigenen EventHandler registrieren und den Client dann disconnecten.
      • Server.Stop() hat einen Parameter bool disconnect dazu bekommen, wo man setzen kann, ob die Clients mit disconnected werden
      • Sowohl die Server als auch die Client-Klasse haben eine bessere Unterstützung für das Vererben bekommen. Einfach z.B. Server.OnClientConnected überschreiben und darin base.OnClientConnected(...); aufrufen.


      Der Download befindet sich im Anfangspost oder hier im Anhang. Alle Änderungen lassen sich auch in der Commit-History von meinem GitHub-Repository nachlesen.

      MfG, Trudi
      Dateien

      Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Trudi“ ()