Server CreateMailslot 建立 \\.\mailslot\first_slot,循環 GetMailslotInfo 檢查消息數,有則 ReadFile 讀取並顯示。
Client CreateFile 打開同名郵槽,WriteFile 發送消息。
HANDLE hMailSlot = CreateMailslot(lpMailSlotName, 0, MAILSLOT_WAIT_FOREVER, NULL);
while (1) {
GetMailslotInfo(hMailSlot, NULL, &dwMessageSize, &dwMessageCount, NULL);
if (dwMessageCount == 0) { Sleep(2000); continue; }
while (dwMessageCount--) {
LPTSTR buf = (LPTSTR)HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, dwMessageSize);
ReadFile(hMailSlot, buf, dwMessageSize, &dwHasReadBytes, NULL);
printf("Receive: %s\n", buf);
HeapFree(GetProcessHeap(), 0, buf);
GetMailslotInfo(hMailSlot, 0, &dwMessageSize, &dwMessageCount, NULL);
}
}
HANDLE hFile = CreateFile(lpMailslotName, GENERIC_WRITE, FILE_SHARE_READ, NULL,
OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, 0);
WriteFile(hFile, lpMessage, (lstrlen(lpMessage)+1)*sizeof(TCHAR), &dwHasWriteBytes, NULL);
簡單可靠的本機/局域網進程間通信範例。