Thema: Delphi Named Pipes (Problem)

Einzelnen Beitrag anzeigen

Benutzerbild von LoRd-MuldeR
LoRd-MuldeR

Registriert seit: 9. Okt 2005
Ort: Somewhere over the Slaughterhouse
132 Beiträge
 
Delphi 7 Professional
 
#1

Named Pipes (Problem)

  Alt 21. Okt 2005, 16:10
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...
  Mit Zitat antworten Zitat