Hallo zusammen,
in
diesem Thread habe ich ein paar Anregungen für ein Netzwerkprotokoll gesucht. In der Hoffnung, dass mir ein paar Leute beim Testen helfen und vielleicht noch einige Verbesserungsvorschläge auftauchen, präsentiere ich hier schonmal den aktuellen (voll funktionsfähigen) Fortschritt.
Die wichtigsten Features im Überblick:
Trennung von Datenpaketen- Jedes Paket kommt unverändert und korrekt getrennt beim Empfänger an.
- Zwei schnell aufeinander gefolgte Datenpakete kommen so beispielsweise nicht in einem Rutsch an, wie es normalerweise bei TCP die Regel ist.
Simultane Übertragungen- Durch dieses Feature ist es möglich, mehrere Übertragungen gleichzeitig über eine einzelne Verbindung ablaufen zu lassen.
- Die maximale Anzahl an gleichzeitigen Übertragungen kann individuell festgelegt werden.
Einfaches Prioritätssystem- Priorisierte Übertragungen sind auch dann aktiv, wenn die maximale Anzahl an gleichzeitigen Übertragungen bereits erreicht ist. So kann man beispielsweise Steuerbefehlen einen Vorrang vor Dateitransfers einräumen.
Transparente Verschlüsselung- Über einfache Encryption Provider Klassen können sämtliche Benutzerdaten vollständig transparent verschlüsselt übertragen werden.
Transparente Kompression- Analog zur Verschlüsselung können die Benutzerdaten automatisch blockweise komprimiert werden.
Transferkontrolle- Sowohl Sender als auch Empfänger kann über einfache Methoden eine Übertragung pausieren, fortsetzen oder abbrechen.
Eventbasierte Funktionalität- Verschiedene Events, wie beispielsweise OnTransferInit, OnTransferWork, OnTransferData und OnTransferFinish bieten dem Entwickler eine komfortable Schnittstelle.
Einfache Dateiübertragungen- Integrierte Unterstützung für Dateiübertragungen. Hierdurch müssen Dateien nicht erst vollständig in den Speicher geladen werden, um sie verschicken zu können.
Intelligenter Datenempfang- Der Empfänger kann pro Übertragung seperat entscheiden, ob er über die eingehenden Daten bei jedem Block, oder erst am Ende der Übertragung informiert werden will.
- Erstere Möglichkeit bietet sich beispielsweise für Dateiübertragungen an. Bei der zweiten Variante sorgt IDTP automatisch für das Sammeln der Daten im Speicher.
Meta Informationen- Jeder Übertragung können Meta Daten hinzugefügt werden, welche dem Empfänger (und Sender) sofort beim Start des Transfers in den Events zur Verfügung stehen. Diese Daten werden auch dann sofort gesendet, wenn die eigentlichen Benutzerdaten z.b. aufgrund der maximalen Anzahl an gleichzeitigen Übertragungen noch nicht gesendet werden.
Weitere Informationen:
- Hagen Reddmanns RCx Unit, welche im TdxIDTPEncryptionProviderRCx verwendet wird, findet ihr hier:
- Die ZLibEx Unit für den TdxIDTPCompressionProviderZLib gibt es hier:
Eine (einfache) Demo Anwendung habe ich als Anhang hinzugefügt. Ich würde mich über jeden Test und vor allem auch über Verbesserungsvorschläge sehr freuen
Viele Grüße
Zacherl