Hier könnt Ihr gute, von Euch geschriebene Codes posten. Sie müssen auf jeden Fall funktionieren und sollten möglichst effizient, elegant und beispielhaft oder einfach nur cool sein.
Nachdem ich schon einige Client-Server Anwendungen mit PB realisiert habe, bin ich immer wieder auf dieselben Probleme gestoßen die die PB-Netzwerk Verwaltung mit sich bring:
Nicht Threadsicher
Kein Disconnect-Event am Client
Keine einfache Client/Connection Verwaltung (z.B. zuweisen von ExtraDaten wie äquivalent SetGadgetData())
Zudem finde ich die Verwaltung von mehreren Servern in einem Programm nicht gerade komfortabel.
Dafür arbeite ich nun an meinen Easy Network Manager, der all diese Probleme umschiffen soll. Der bisherige Stand:
UDP #PB_NetworkEvent_Connect und #PB_NetworkEvent_Disconnect
Einfache Paket Verwaltung inkl. Kompression
Einfache Übertragung großer Daten via Streams
stark Parallelisiert für gute Performance
Einfaches Cache - Managemant
Protokol Manager zum einfachen entwickeln eigener Protokolle
Authentication System zur einfachen Benutzeranmeldung und Verwaltung
Log System zum Aufzeichnen sämtlicher Aktionen
Todo:
weitere Optimierungen des Codes
Ständig in Entwicklung. Updates folgen. Wünsche/Kritik/Anregungen immer gern
Eine Vollständige, gut kommentierte Beschreibung aller Befehle und wie man Sie benutzt findet man in der Datei ENM_CommandDescription.pbi im Download-Paket.
Das Projekt ENM ist nun bereits sehr umfangreich, und wird ständig weiterentwickelt und verbessert. Wenn dir ENM in einem deiner Projekte hilf bedank dich doch mit einem Bier ; )
Von der Sache her wirklich TOP !!!!
Ich hoffe Du arbeitest noch weiter dran.
Ich denke Du würdest auch etwas mehr Zuspruch bekommen, wenn Du zu den Includes auch noch 2-3 kleine Beispiele machen würdest.
Es ist am Anfang immer schwierig, sich in die Topologie fremder Programme einzuarbeiten.
Sicher arbeite ich dran weiter. Beispiele gibts dazu sobald ich die Sende/Empfangs - Funktionen eingebaut habe. Das ganze sind einfach die grundlegendsten Netzwerkfunktionen, nur einfach viel einfacher und effizienter zu verwenden als die Standard PB - Funktionen (meiner Meinung nach)
Okay, da bin ich mal gespannt wie es weiter geht.
Mache nämlich auch gerade viel mit Client / Server Verbindungen und suche quasi noch eine gut, aber vorallem "sichere" Methode für das gesamte Handling.
Nebenbei: Was wichtig wäre für das Senden und Empfangen von Daten wäre die Prüfung auf Vollständigkeit der Daten beim Empfang. Wurde ja hier schon öfters im Forum drüber diskutiert.
Eben das will ich beim Senden/Empfangen einbauen. Eine kleine Paket-Verwaltung, gegebenenfalls mit Kompression die sicherstellt das die Daten so ankommen wie sie abgesendet werden.
Neu Version ist online, Paket-Verwaltung implementiert
Leider hab ich noch keine Zeit gehabt ein anschauliches Beispiel zu stricken. Wer sich aber schonmal mit den neuen Befehlen auseinandersetzen will findet die Beschreibung in der Datei ENM_CommandDescription.pbi.
Paket-Verwaltung optimiert, nachladen fehlender Parts verbessert, bzw. kleinen Bug gefixt. Das Signatur-Byte wird nun für jedes Paket dynamisch erzeugt und mit einem Gegenbyte geprüft. Ungültige Pakete sollten so zu 99.9% ausgeschlossen sein, bzw. ENM - Pakete lassen sich nicht mehr so leicht durch beispielsweise einen Netzwerksniffer erkennen.
Kompression für Pakete wurde integriert und ist einfach über einen Flag bei ENM\SendPaket() nutzbar. Packen/Entpacken usw. geschieht im Hintergrund.
Im Ordner sample\ gibt es nun ein kleines Client - Server Demo das die Grundzüge des ENM demonstriert.
Ich habe die vorlage des Servers und Client mal getestet.
Mir ist ein Problem aufgefallen.
Ab und zu bleibt der Client bei Packet 3 stehen.
Wenn man die verbindung zum Server aufbaut mit dem Client geht es super beim erstenmal.
Beendet man den Client dann und startet ihn neu, sendet der Server ihm zwar die Packete und der Client antwortet auch.
Nur der Server reagiert auf die antwort vom Client nicht.
Windows 10 x64 Pro - PB 5.61 X64 / x32 - PB 4.6 x32