Hallo,
inzwischen hab ichs gefunden. Man binde einfach die
Unit die Anbei ist ein.
Im Dienst macht man dann folgendes:
Man nehme ein TMultiServerPipe Objekt, welches man z.B. im ServiceStart des Dienstes so initialisiert:
MultiServerPipe:=TMultiServerPipe.Create('MyFunnyPipe');
.
Um jetzt Daten zu empfangen muß man sich in das MultiServerPipe.onReadData ereignis einklinken.
Das ReadData muß als
Methode wie folgt definiert sein:
procedure ReadData(Sender: TObject; ServerPipe: TAbstractPipe; Buffer: Pointer; BuffSize: DWord);
Dort drinne kann man auf empfangene Daten in Buffer zugreifen (die die Größe BuffSize haben). Zum direkten antworten an den Sender macht man einfach ein ServerPipe.Write(Buffer,BufferGröße,GeschriebeneBy tes). In GeschriebeneBytes stehen dann die übertragenen Byte Anzahl.
Auf der CLient Seite ist das dann analog, nur das man statt TMultiServerPipe ein TClientPipe nehmen muß.
Der Dienst unterstütz somit von haus aus mehrere parallele Verbindungen, d.h. wenn man vom Dienst außerhalb des ReadData an einen Client senden will, brauch man dessen Verbindungsobjekt, im Prinzip alles änlich den Socket komponenten von Delphi.
Hoffe es war nicht allzuviel unverständliches dabei...