Thema: Delphi was macht Dienst gerade?

Einzelnen Beitrag anzeigen

Benutzerbild von fiasko
fiasko

Registriert seit: 10. Dez 2002
Ort: Dresden
506 Beiträge
 
#5

Re: was macht Dienst gerade?

  Alt 15. Nov 2004, 20:09
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...
Angehängte Dateien
Dateityp: pas pipes.pas (9,4 KB, 32x aufgerufen)
Thomas Liske
Posts comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.
  Mit Zitat antworten Zitat