【IPC進程間通訊之一】郵槽MailSlot

來源:互聯網
上載者:User

IPC處理序間通訊+郵槽MailSlot              IPC(Inter-Process Communication,處理序間通訊)。       現代電腦採用虛擬記憶體機制,為進程提供獨立的足夠大的地址空間,處於安全目的,一個進程不具有特殊的許可權,是無法訪問另一個進程的記憶體空間,進程間相互隔絕。處理序間通訊IPC就需要特別的機制來實現,郵槽MailSlot是常用的IPC方法之一。               1.郵槽(MailSlot):               郵槽MailSlot通訊的進程分為服務端用戶端。服務端建立MailSlot,建立時指定郵槽名,用戶端同過郵槽名開啟MailSlot。       郵槽是單向的,服務端只能讀取MailSlot,用戶端只能寫入MailSlot。服務端讀取資料是先入先出,即先寫入的資料先被讀取。
        2.郵槽命名 :        本機上格式:\\.\mailslot\[path\]name        如:\\.mailslot\my_mailslot
       3.基本API函數建立郵槽:        HANDLE  CreateMailSlot(                         LPCTSTR  lpName,                          DWORD     nMaxMessageSize,                          DWORD     lReadTimeout,                          LPSECURITY_ATTRIBUTES   lpSecurityAttributes);        第一個參數:郵槽名。        第二個參數:最大訊息長度。        第三個參數:讀取逾時,設為0時,沒有訊息立即返回,MAILSLOT_WAIT_FORVER時,一直等待訊息。        第三個參數:安全屬性,一般設為NULL。        該函數建立一個Mailslot,並返回該郵槽的控制代碼。讀取郵槽:               BOOL ReadFile(
                    HANDLE    hFile,
                    LPVOID     lpBuffer,
                    DWORD    nNumberOfBytesToRead,
                    LPDOWRD    lpNumberOfBytesRead,
                    LPOVERLAPPED   lpOverlapped);
        第一個參數:郵槽控制代碼。        第二個參數:緩衝地址。        第三個參數:訊息的長度。        第四個參數:實際讀取的長度。        第五個參數:一般設定為NULL。        該函數用於讀取郵槽內資料。開啟郵槽:        BOOL  CreateFile(                     LPCTSTR   lpFileName,
                     DWORD     dwDesiredAccess,
                     DWORD     dwShareMode,
                     LPSECURITY_ATTRIBUTES   lpSecurityAttributes,
                     DWORD    dwCreationDisposition,
                     DWORD    dwFlagsAndAttributes,
                    HANDLE    hTemplateFile
);         第一個參數:檔案指標。         第二個參數:訪問模式。         第三個參數:共用模式。         第四個參數:安全屬性指標。         第五個參數:建立選項。         第六個參數:檔案屬性。         第七個參數:用於複製檔案控制代碼。         該函數用於用戶端開啟Mailslot。寫入郵槽:        BOOL  WriteFile(
                     HANDLE    hFile,
                     LPCVOID   lpBuffer,
                     DWORD     nNumberOfBytesToWrite,
                     LPDWORD   lpNumberOfBytesWritten,
                     LPOVERLAPPED    lpOverlapped);
         第一個參數:檔案控制代碼。         第二個參數:資料緩衝區指標。         第三個參數:寫入位元組數。         第四個參數:返回實際寫入位元組數。         第五個參數:結構體指標,一般置NULL。         該函數用於用戶端向Mailslot寫入資料。
         4.牛刀小試 :          先在VC6.0中運行服務端程式,在運行用戶端程式:
        運行效果:
Mailslot服務端:Mailslot用戶端:

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.