Also ich habe mir dazu auch schon mal Gedanken gemacht und bin auf folgendes Protokoll gekommen:
Delphi-Quellcode:
TMessageHeader = packed record
BlockSize: Word; // Größe des aktuellen Datenblocks (inkl. Header)
StreamNo : Byte; // 0=Command Stream, 1..255=Data Streams
Payload : Array[0..0] of Byte; // Nutzdaten
end;
Damit können bis zu 256 unabhängige Streams über die gleiche
TCP-Verbindung gemultiplexed werden.
Nach Aufbau der
TCP/
IP-Verbindung ist nur der Command-Stream (0) offen.
Der Client sendet dann z.B. einen Befehl an den Server:
Der Server antwortet
Die Daten werden dann blockweise mit StreamNo=2 übertragen.
Zum Schluss wird eine Message ohne Payload geschickt um den Stream wieder zu schliesen.
Der Charme dieses Protokolls ist seine Einfachheit.
(das Protokoll im Command-Stream gehört aber nicht dazu. Das SENDFILE oben war nur ein Anwendungsbeispiel)
Man kann es unabhängig vom Einsatzzweck benützen.