Registriert seit: 9. Okt 2005
Ort: Somewhere over the Slaughterhouse
132 Beiträge
Delphi 7 Professional
|
Named Pipes (Problem)
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...
|
|
Zitat
|