首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> C++ >> 關於C++

Windows 郵槽通信 C/S 完整示例

     編輯:關於C++

架構

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);

簡單可靠的本機/局域網進程間通信範例。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved