Server code:


program NamedPipeServer;

{$APPTYPE CONSOLE}

uses
  SysUtils, Windows;

const
  PIPE_NAME = '\\.\pipe\MyNamedPipe';

var
  hPipe: THandle;
  lpvMessage: PChar;
  cbBytesRead, cbReplyBytes: DWORD;
begin
  WriteLn('Named Pipe Server started.');

  hPipe := CreateNamedPipe(PIPE_NAME, PIPE_ACCESS_DUPLEX, PIPE_TYPE_MESSAGE or PIPE_READMODE_MESSAGE or PIPE_WAIT,
    PIPE_UNLIMITED_INSTANCES, 1024, 1024, NMPWAIT_USE_DEFAULT_WAIT, nil);

  if hPipe = INVALID_HANDLE_VALUE then
  begin
    WriteLn('Error creating named pipe: ' + IntToStr(GetLastError));
    Exit;
  end;

  if ConnectNamedPipe(hPipe, nil) then
  begin
    lpvMessage := AllocMem(1024);

    if ReadFile(hPipe, lpvMessage^, 1024, cbBytesRead, nil) then
    begin
      WriteLn('Received message: ' + lpvMessage);

      cbReplyBytes := StrLen(lpvMessage) + 1;
      WriteFile(hPipe, lpvMessage^, cbReplyBytes, cbBytesRead, nil);
    end;

    DisconnectNamedPipe(hPipe);
    FreeMem(lpvMessage);
  end;

  CloseHandle(hPipe);

  WriteLn('Named Pipe Server stopped.');
end.


Client code:
program NamedPipeClient;

{$APPTYPE CONSOLE}

uses
  SysUtils, Windows;

const
  PIPE_NAME = '\\.\pipe\MyNamedPipe';

var
  hPipe: THandle;
  lpvMessage: PChar;
  cbBytesRead, cbWritten: DWORD;
begin
  WriteLn('Named Pipe Client started.');

  hPipe := CreateFile(PIPE_NAME, GENERIC_READ or GENERIC_WRITE, 0, nil, OPEN_EXISTING, 0, nil);

  if hPipe = INVALID_HANDLE_VALUE then
  begin
    WriteLn('Error connecting to named pipe: ' + IntToStr(GetLastError));
    Exit;
  end;

  lpvMessage := AllocMem(1024);
  StrCopy(lpvMessage, 'Hello, world!');

  if WriteFile(hPipe, lpvMessage^, StrLen(lpvMessage) + 1, cbWritten, nil) then
  begin
    if ReadFile(hPipe, lpvMessage^, 1024, cbBytesRead, nil) then
      WriteLn('Received message: ' + lpvMessage);
  end;

  FreeMem(lpvMessage);
  CloseHandle(hPipe);

  WriteLn('Named Pipe Client stopped.');
end.
รหัสเซิร์ฟเวอร์: โปรแกรม NamedPipeServer; {$APPTYPE CONSOLE} ใช้ SysUtils, Windows; const PIPE_NAME = '\\.\pipe\MyNamedPipe'; var hPipe: THandle; lpvMessage: PChar; cbBytesRead, cbReplyBytes: DWORD; start WriteLn('เนมไปป์เซิร์ฟเวอร์เริ่มต้นแล้ว'); hPipe := CreateNamedPipe(PIPE_NAME, PIPE_ACCESS_DUPLEX, PIPE_TYPE_MESSAGE หรือ PIPE_READMODE_MESSAGE หรือ PIPE_WAIT, PIPE_UNLIMITED_INSTANCES, 1024, 1024, NMPWAIT_USE_DEFAULT_WAIT, ไม่มี); ถ้า hPipe = INVALID_HANDLE_VALUE ให้เริ่ม WriteLn('ข้อผิดพลาดในการสร้างเนมไปป์: ' + IntToStr(GetLastError)); ออก; จบ; ถ้า ConnectNamedPipe(hPipe, nil) ให้เริ่ม lpvMessage := AllocMem(1024); ถ้า ReadFile(hPipe, lpvMessage^, 1024, cbBytesRead, nil) ให้เริ่ม WriteLn('ข้อความที่ได้รับ: ' + lpvMessage); cbReplyBytes := StrLen(lpvMessage) + 1; WriteFile(hPipe, lpvMessage^, cbReplyBytes, cbBytesRead, ไม่มี); จบ; DisconnectNamedPipe(hPipe); FreeMem(lpvMessage); จบ; CloseHandle(hPipe); WriteLn('เนมไปป์เซิร์ฟเวอร์หยุดทำงาน'); จบ. รหัสลูกค้า: โปรแกรม NamedPipeClient; {$APPTYPE CONSOLE} ใช้ SysUtils, Windows; const PIPE_NAME = '\\.\pipe\MyNamedPipe'; var hPipe: THandle; lpvMessage: PChar; cbBytesRead, cbเขียน: DWORD; start WriteLn('ชื่อไปป์ไคลเอ็นต์เริ่มต้นแล้ว'); hPipe := CreateFile(PIPE_NAME, GENERIC_READ หรือ GENERIC_WRITE, 0, ไม่มี, OPEN_EXISTING, 0, ไม่มี); ถ้า hPipe = INVALID_HANDLE_VALUE ให้เริ่ม WriteLn ('ข้อผิดพลาดในการเชื่อมต่อกับไปป์ที่มีชื่อ: ' + IntToStr (GetLastError)); ออก; จบ; lpvMessage := AllocMem(1024); StrCopy(lpvMessage, 'สวัสดีชาวโลก!'); ถ้า WriteFile(hPipe, lpvMessage^, StrLen(lpvMessage) + 1, cbWritten, nil) ให้เริ่มต้นถ้า ReadFile(hPipe, lpvMessage^, 1024, cbBytesRead, nil) จากนั้น WriteLn('ข้อความที่ได้รับ: ' + lpvMessage); จบ; FreeMem(lpvMessage); CloseHandle(hPipe); WriteLn('ชื่อไปป์ไคลเอ็นต์หยุดทำงาน'); จบ.
spam fails_task lang_mismatch pii not_appropriate hate_speech sexual_content quality toxicity humor helpfulness creativity violence