日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

进程间通信(6) 邮槽

發布時間:2025/3/21 编程问答 16 豆豆
生活随笔 收集整理的這篇文章主要介紹了 进程间通信(6) 邮槽 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
  • 郵槽是基于廣播通信體系設計出來的,它采用無連接的不可靠的數據傳輸。
  • 郵槽是一種單向通信機制,創建郵槽的服務器進程讀取數據,打開郵槽的客戶端寫入數據。
  • 郵槽可以實現一對多的單向通信。但是數據量小,通常都是424字節以下。假設client1先send,client2再send,最后server可以連續receive兩次
  • 如果是網絡通信,server的名稱寫".",client寫服務器電腦名或ip地址

1. 過程

a. server 先CreateMailslot
b. client 再CreateFile連接之前的mailSlot
c. client writeFile
d. server readFile

2.該函數利用指定的名稱來創建一個郵槽,然后返回所創建的郵槽的句柄。

HANDLE WINAPI CreateMailslot(__in LPCTSTR lpName,__in DWORD nMaxMessageSize,__in DWORD lReadTimeout,__in_opt LPSECURITY_ATTRIBUTES lpSecurityAttributes );
  • 參數 lpName
    指定了將要創建的郵槽的名稱,該名稱的格式必須為 \.\mailslot\MailslotName。
    在這里需要注意的是兩個斜杠后的那個 “.”,在這里使用圓點代表的是本地機器,

  • 參數 nMaxMessageSize
    用來指定可以被寫入到郵槽的單一消息的最大尺寸,為了可以發送任意大小的消息,需要將該參數設置為 0 。

  • 參數 lReadTimeOut
    指定讀取操作的超時時間間隔,以毫秒作為單位。
    讀取操作在超時之前可以等待一個消息被寫入到郵槽中,如果將這個值設置為 0 ,那么若沒有消息可用的話,該函數將立即返回。如果將該值設置為 MAILSLOT_WAIT_FOREVER,則該函數會一直等待,直到有消息可用。

  • 參數 lpSecurityAttributes
    一般設置為 NULL 即可,即采用 Windows 默認的針對于郵槽的安全性。

3. code

server:

HANDLE hMailslot;hMailslot=CreateMailslot("\\\\.\\mailslot\\MyMailslot",0,MAILSLOT_WAIT_FOREVER,NULL);if(INVALID_HANDLE_VALUE==hMailslot){MessageBox("創建郵槽失敗!");return;}char buf[100];DWORD dwRead;if(!ReadFile(hMailslot,buf,100,&dwRead,NULL)){MessageBox("讀取數據失敗!");CloseHandle(hMailslot);return;}MessageBox(buf);CloseHandle(hMailslot);

client

HANDLE hMailslot;hMailslot=CreateFile("\\\\.\\mailslot\\MyMailslot",GENERIC_WRITE,FILE_SHARE_READ,NULL,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,NULL);if(INVALID_HANDLE_VALUE==hMailslot){MessageBox("打開郵槽失敗!");return;}char buf[]="http://www.sunxin.org";DWORD dwWrite;if(!WriteFile(hMailslot,buf,strlen(buf)+1,&dwWrite,NULL)){MessageBox("寫入數據失敗!");CloseHandle(hMailslot);return;}CloseHandle(hMailslot);

【引用】

  • 代碼 https://github.com/thefistlei/os/tree/main/processCommunication/mailSlot
  • VC++ 深入詳解 孫鑫
  • 總結

    以上是生活随笔為你收集整理的进程间通信(6) 邮槽的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。