Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi Named Pipes (Problem) (https://www.delphipraxis.net/55475-named-pipes-problem.html)

LoRd-MuldeR 21. Okt 2005 15:10


Named Pipes (Problem)
 
Hallo.

Hab grade mal angefangen mit Named Pipes rumzuexperimentieren. Aber irgendwie bin ich noch nich so ganz dahinter gestiegen. Hab bisher ein kleinen Server Prozess und einen passenden Client Prozess gebastelt. Eigentlich soll ein kurzer String vom Server zum Client übertragen werden. Aber leider klappt es nich. Weiß jemand wo der Fehler liegen könnte?


Server:

Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
  Pipe: THandle;
  x: Cardinal;
const
  s: String = 'Oi! the Diddy.';
begin
  Pipe := CreateNamedPipe('\\.\pipe\{75263353-83E2-44EA-B988-7213D61274E5}',
    PIPE_ACCESS_OUTBOUND, PIPE_TYPE_BYTE or PIPE_READMODE_BYTE or PIPE_WAIT, 1,
    4096, 4096, NMPWAIT_USE_DEFAULT_WAIT, nil);

  if Pipe = INVALID_HANDLE_VALUE then begin
    ShowMessage('Faild to create the pipe :-(');
    Exit;
  end;

  ConnectNamedPipe(Pipe, nil);

  WriteFile(Pipe, PAnsiChar(s)^, Length(s), x, nil);

  if x <> Length(s) then begin
    ShowMessage('Faild to write data to pipe :-(');
    Exit;
  end;
end;

Client:

Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
  Handle: THandle;
  b: PAnsiChar;
  x: Cardinal;
begin
  Handle := CreateFile('\\.\pipe\{75263353-83E2-44EA-B988-7213D61274E5}',
    GENERIC_READ, FILE_SHARE_READ, nil, OPEN_EXISTING, 0, 0);

  if Handle = INVALID_HANDLE_VALUE then begin
    ShowMessage('Faild to call the pipe :-(');
    Exit;
  end;

  b := allocMem(4096);
  ReadFile(Handle, b, 4096, x, nil);

  ShowMessage(IntToStr(x) + #10 + '"' + b + '"');
end;

// Edit

Achso:
Das Problem is, der String der beim Client ankommt is 0 Zeichen lang...

sakura 21. Okt 2005 15:12

Re: Named Pipes (Problem)
 
Hi,

ohne jetzt Dein Beispiel genauer zu betrachten, schau Dir mal meine alten (und nicht die besten :mrgreen:) Named Pipe Komponenten an. Die sind im Source Code hier:

Code: http://www.delphipraxis.net/internal...?p=36961#36961
Beispiel: http://www.delphipraxis.net/internal...?p=37034#37034

Hoffentlich hilft Dir das weiter.

...:cat:...

LoRd-MuldeR 21. Okt 2005 15:14

Re: Named Pipes (Problem)
 
Danke. Aber geht das für den Anfang nich kürzer ???

//EDIT

Könnte natürlich einfach deine Componenten übernehmen, aber das is ja witzlos. Und bei dem langen Quell-Text durchzusteigen is etwas schwierig, wenn man noch nich mit Pips gearbeitet hat.


Alle Zeitangaben in WEZ +1. Es ist jetzt 04:57 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz