Laden...

Netzwerkbibliothek

Erstellt von Floste vor 14 Jahren Letzter Beitrag vor 14 Jahren 3.849 Views
Floste Themenstarter:in
1.130 Beiträge seit 2007
vor 14 Jahren
Netzwerkbibliothek

Beschreibung:

Da es immer wieder einige Anfragen zum Thema gibt, habe ich eine Bibliothek geschrieben, die einem einiges davon abnimmt:

-Socket auslesen+Threading
-Handshake mit Versionsübertragung (Es soll sich ja nicht jeder x-belibige Browser verbinden)
-Pakete vor der Weiterverarbeitung an zusammensetzen und voneinander trennen
-Man kann kommandos unterschidlich handler zuordnen.
-Optionales callback, wenn Packet gesendet wurde (Nützlich z.B. bei Dateiübertragungen, um Stückweise einzulesen)
-Wenn gewünscht kann ich Verschlüsselung noch hinzufügen

Man muss die einzelnen Verarbeitungsschritte nurnoch zusammensetzen:


            Connection conn = new Connection(tcpClient);

            Handshake handshake = new Handshake("Protokollname", 1);
            handshake.Fail += (sender,ea) => { conn.Close(); };

            PacketPatcher patcher = new PacketPatcher();

            CommandParser parser = new CommandParser();
            //Kommanos hier registrieren
            ....

            conn.Next = handshake;
            handshake.Next = patcher;
            patcher.Next = parser;
            ....

            conn.Start();

Um auf Verbindungen zu warten gibts denConnectionWaiter.

Wer irgendwelche Events abboniert oder Callbacks angibt muss man damit rechnen, dass diese in anderen Threads ausgeführt werden. Deshalb sollte man BeginInvoke benutzen!
Wenn man Invoke statt begininvoke nimmt, senkt das die Performance.
(Da guiElemente auch geschlossen/zerstört werden können, sollte man begininvoke mit try-catch verwenden.)

Ein Beispielprogramm liegt bei: ein kleiner Chat

Schlagwörter: tcp socket sockets

Projekte:Jade, HttpSaver
Zum Rechtschreiben gibts doch schon die Politiker. Aber die bauen auch nur mist!