AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Mailslots ?

Ein Thema von Captnemo · begonnen am 8. Mai 2003 · letzter Beitrag vom 16. Sep 2009
Antwort Antwort
Seite 2 von 3     12 3      
Benutzerbild von Captnemo
Captnemo

Registriert seit: 27. Jan 2003
Ort: Bodenwerder
1.126 Beiträge
 
Delphi XE4 Architect
 
#11
  Alt 9. Mai 2003, 10:46
@sakura

Danke. Mal sehen was ich draus machen kann.

Manchmal macht MS uns das Leben schwere als es sein sollte.
Wenn es das PDSK so gäbe wie die Hilfe von Delphi, dann wäre das alles wahrscheinlich schneller zu lösen

@luckie

Das PDSK hab ich mir schon runtergeladen. Ich darin genauso gelesen, wie auch in der Win32-Hilfe, die Delphi mitbringt.
Wenn man sich mit einer Materie auseinandersetzt, mit der man sich noch nie beschäftigt hat, dann kommt man um eine verständlichere Erklärung von anderen Personen kaum drumrum.
Ein Beispiel-Code sagt manchmal mehr wie tausend MS-Seiten

Noch dazu brauche Ich meistens länger, als früher, da meine Grauen Zellen sich langsam auf die Reise macht
Dieter
  Mit Zitat antworten Zitat
Benutzerbild von Motzi
Motzi

Registriert seit: 6. Aug 2002
Ort: Wien
598 Beiträge
 
Delphi XE2 Professional
 
#12
  Alt 9. Mai 2003, 13:59
Jedes Kernel-Objekt besitzt einen Security-Descriptor der die Zugriffsrechte für das Objekt bestimmt. Dieser Security-Descriptor besitzt unter anderem 2 ACLs (ACL = Access Control List). Und zwar die DACL (Discretionary ACL) und die SACL (System ACL). Die SACL brauchst du in diesem Fall überhaupt nicht, denn die Zugriffsrechte für Benutzer, Gruppen, Computer werden alle in der DACL festgelegt. Ein Dienst lauft in der System-LogonSession und besitzt das SeTCBPrivilege (TCB = Trusted Computer Base) und hat somit die höchsten Rechte. Der Dienst sollte also ohne Probleme den MailSlot des Progs öffnen können. Ein Problem ist es nur umgekehrt, da das Prog kein Recht hat auf den Mailslot des Services zuzugreifen. Um das zu erreichen muss ein neuer Eintrag im DACL des Service-Mailslot vorgenommen werden. In dem Code von Sakura wird einfach ein leerer DACL erzeugt, dh es sind keine expliziten Zugriffsrechte angegeben und daher kann jeder Benutzer/Gruppe/Computer ohne Einschränkungen auf den Mailslot zugreifen. Eine andre Möglichkeit wäre einen neuen ACE (Access Control Entry) zu der DACL hinzuzufügen, der nur den expliziten Zugriff für den einen Benutzer zulässt mit dessen Prog zu kommunizieren musst.
Manuel Pöter
  Mit Zitat antworten Zitat
Benutzerbild von Captnemo
Captnemo

Registriert seit: 27. Jan 2003
Ort: Bodenwerder
1.126 Beiträge
 
Delphi XE4 Architect
 
#13
  Alt 9. Mai 2003, 15:44
Hi Sakura,

ich bin zu dämlich

Ich kriegs mit deinen Komponenten nicht hin.

Also kurz was ich gemacht habe:

Server:

gnsPipeServer auf die Form. Pipename=Test. Active=True;
ProcessMessage
..
var
Text: String;
begin
Text:=StrPas(aByteArray);
Memo1.Lines.Add(Text);
end;
..

Client:

gnsPipeClient auf die Form. Pipename=Test.

..
procedure TForm1.Button2Click(Sender: TObject);
var
lpBuffer: Pointer;
Buffersize: Integer;
InCount, OutCount: Cardinal;
begin
Buffersize:=255;
GetMem(lpBuffer,Buffersize);
lpBuffer:=PChar(Edit1.text);
gnsPipeClient1.SendAndReceive(lpBuffer,Buffersize, InCount,OutCount);
FreeMem(lpBuffer, Buffersize);
end;
..

--------------------------------------
Fehlermeldung: Ungültige Zeigeroperation.

Ich weiß das was ich da mache ist sicher falsch. Aber mit Pointern hab ich nicht so

Hast du nicht ein Beispielcode für micht
Dieter
  Mit Zitat antworten Zitat
Benutzerbild von sakura
sakura

Registriert seit: 10. Jun 2002
Ort: München
11.412 Beiträge
 
Delphi 11 Alexandria
 
#14
  Alt 9. Mai 2003, 16:06
Mal schauen, irgendwo gibt es aber bestimmt noch ein Beispiel *grübel*

......
Daniel W.
Ich bin nicht zurück, ich tue nur so
  Mit Zitat antworten Zitat
Benutzerbild von sakura
sakura

Registriert seit: 10. Jun 2002
Ort: München
11.412 Beiträge
 
Delphi 11 Alexandria
 
#15
  Alt 9. Mai 2003, 16:08
Zitat von leicht gefälscht:
Luck is with you
Keine Ahnung, ob das was taugt, aber das lag hier gerade rum.

......
Angehängte Dateien
Dateityp: zip pipecomptest.zip (5,3 KB, 296x aufgerufen)
Daniel W.
Ich bin nicht zurück, ich tue nur so
  Mit Zitat antworten Zitat
Benutzerbild von Captnemo
Captnemo

Registriert seit: 27. Jan 2003
Ort: Bodenwerder
1.126 Beiträge
 
Delphi XE4 Architect
 
#16
  Alt 10. Mai 2003, 10:36
Hat eine Zeit und Lust sich das Mal anzusehen? Vielleicht Du Sakura ?

Den Dienst kann ich starten. Das prog auch. Wenn ich eine Nachricht an den Dienst sende, dann ist prog und Dienst voll ausgelastet.
Angehängte Dateien
Dateityp: zip pipeservicetest.zip (17,8 KB, 102x aufgerufen)
Dieter
  Mit Zitat antworten Zitat
Benutzerbild von sakura
sakura

Registriert seit: 10. Jun 2002
Ort: München
11.412 Beiträge
 
Delphi 11 Alexandria
 
#17
  Alt 10. Mai 2003, 12:15
Zitat von Captnemo:
Vielleicht Du Sakura ?
Gerne doch. 8)

Im Service ist der kleine, aber alles entscheidene Fehler. Wie gesagt, dadurch, daß die Komponenten noch nicht ganz ausgereift sind, ist dieser Fehler wohl etwas fatal.

Die PChar-Variable des Servers, welche Du nutzt, um die Daten zu empfangen, ist nicht initialisiert. Die daraus entstehende Exception wird nicht abgefangen und verläuft sich in der CPU.

Korrektur sind die folgenden Zeilen. Anschließend läuft alles wie am Schnürchen.
Code:
procedure TService1.gnsPipeServer1ProcessMessage(Sender: TObject;
  aByteArray: Pointer; BufferSize, InCount: Cardinal;
  var OutCount: Cardinal; var DisconnectClient: Boolean);
var
   i: Cardinal;
   temp: PChar;
begin
  [color=#cc0000]Temp := GetMemory(Incount + 1);
  try[/color]
    for i:=0 to InCount do
      Temp[i]:=CHR(TByteArray(aByteArray^)[i]);
    Nachrichten.Add(StrPas(temp));
  [color=#cc0000]finally
    FreeMemory(Temp);
  end;[/color]
end;
......
Daniel W.
Ich bin nicht zurück, ich tue nur so
  Mit Zitat antworten Zitat
Benutzerbild von Captnemo
Captnemo

Registriert seit: 27. Jan 2003
Ort: Bodenwerder
1.126 Beiträge
 
Delphi XE4 Architect
 
#18
  Alt 10. Mai 2003, 12:41
Gelesen - in Prog übertragen - gestartet - läuft.

Auf die simple Idee für Temp erstmal Speicher zu reservieren, bin ich Trottel natürlich nicht gekommen.

Danke.

Jetzt muß ich das Ganze noch in mein Programm übertragen. Hoffentlich läuft jetzt alles
Dieter
  Mit Zitat antworten Zitat
bonnet

Registriert seit: 4. Aug 2004
Ort: Leipzig
7 Beiträge
 
#19

Re: Mailslots ?

  Alt 25. Apr 2005, 11:26
Hallo,
vielen Dank für diese tollen Thread, hab die Kompnenten von sakura ausprobiert und es läuft alles fantastisch.
Bis auf eine kleine Ausnahme:
Wenn ich erst eine lange Nachricht versende und anschließend wieder kurze werden an die kurze Nachrichten noch einige Zeichen angehängt.

Woran kann das liegen? Hat jemand eine Idee?
  Mit Zitat antworten Zitat
Benutzerbild von sakura
sakura

Registriert seit: 10. Jun 2002
Ort: München
11.412 Beiträge
 
Delphi 11 Alexandria
 
#20

Re: Mailslots ?

  Alt 30. Mai 2005, 09:10
Hi, ich sehe das erst jetzt Die Komponenten, welche ich hier gepostet habe, arbeiten (zur Vereinfachung) mit einer festen Messagegröße (einstellbar in der Properties), wenn Du eine andere brauchst, dann musst Du diese neu definieren oder (leider) einen gänzlich anderen Ansatz nutzen.

......
Daniel W.
Ich bin nicht zurück, ich tue nur so
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 3     12 3      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 09:12 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz