|
delphi使用mailslot,创建通讯示例代码
在 Delphi 中使用 MailSlot 创建通讯的示例代码如下。MailSlot 是 Windows 提供的一种简单的进程间通信(IPC)机制。以下是一个创建 MailSlot 的简单示例,包括发送和接收消息的代码。
### 创建 MailSlot 服务器
首先,创建一个 MailSlot 服务器,接收来自客户端的消息:
- program MailSlotServer;
- uses
- Windows, SysUtils, Classes;
- const
- MailSlotName = '\\.\mailslot\MyMailSlot'; // MailSlot 名称
- var
- hMailSlot: THandle;
- Buffer: array[0..255] of Char;
- BytesRead: DWORD;
- Overlapped: TOverlapped;
- begin
- // 创建 MailSlot
- hMailSlot := CreateMailslot(MailSlotName, 0, MAILSLOT_WAIT_FOREVER, nil);
- if hMailSlot = INVALID_HANDLE_VALUE then
- begin
- Writeln('无法创建 MailSlot: ', SysErrorMessage(GetLastError));
- Exit;
- end;
- Writeln('MailSlot 已创建,等待消息...');
- // 等待并读取消息
- while True do
- begin
- // 清空缓冲区
- ZeroMemory(@Buffer, SizeOf(Buffer));
- BytesRead := 0;
- // 读取消息
- if ReadFile(hMailSlot, @Buffer, SizeOf(Buffer) - 1, @BytesRead, @Overlapped) then
- begin
- Buffer[BytesRead] := #0; // 添加字符串结束符
- Writeln('接收到消息: ', Buffer);
- end
- else
- begin
- Writeln('读取消息失败: ', SysErrorMessage(GetLastError));
- end;
- end;
- // 关闭 MailSlot
- CloseHandle(hMailSlot);
- end.
复制代码
### 创建 MailSlot 客户端
接下来,创建一个 MailSlot 客户端,向服务器发送消息:
- program MailSlotClient;
- uses
- Windows, SysUtils;
- const
- MailSlotName = '\\.\mailslot\MyMailSlot'; // MailSlot 名称
- var
- hMailSlot: THandle;
- Message: string;
- BytesWritten: DWORD;
- begin
- // 打开 MailSlot
- hMailSlot := CreateFile(MailSlotName,
- GENERIC_WRITE,
- 0, // 不允许共享
- nil,
- OPEN_EXISTING,
- 0,
- 0);
- if hMailSlot = INVALID_HANDLE_VALUE then
- begin
- Writeln('无法打开 MailSlot: ', SysErrorMessage(GetLastError));
- Exit;
- end;
- // 发送消息
- Message := 'Hello from MailSlot Client!';
- if not WriteFile(hMailSlot, PChar(Message)^, Length(Message) * SizeOf(Char), @BytesWritten, nil) then
- begin
- Writeln('发送消息失败: ', SysErrorMessage(GetLastError));
- end
- else
- begin
- Writeln('消息发送成功: ', Message);
- end;
- // 关闭 MailSlot
- CloseHandle(hMailSlot);
- end.
复制代码
### 使用说明
1. **编译并运行服务器**:首先编译并运行 `MailSlotServer` 程序。它会创建一个 MailSlot 并等待接收消息。
2. **编译并运行客户端**:然后编译并运行 `MailSlotClient` 程序。它会向服务器发送一条消息。
3. **查看输出**:在服务器控制台中,你应该能看到接收到的消息。
### 注意事项
- MailSlot 名称应以 `\\.\mailslot\` 开头。
- 服务器在运行时会一直等待消息,因此可以在不同的终端中运行服务器和客户端。
- 请确保有适当的权限来创建和访问 MailSlot。
通过以上代码,你可以在 Delphi 中实现简单的 MailSlot 通信。
|
|