應用程式之間互相通訊的幾種方法

2022-05-08 08:39:24 字數 1191 閱讀 4021

**:

mymailslot = createmailslot(pslotname, 0, mailslot_wait_forever, null);

然後,client端就可以像開啟檔案一樣開啟這個mailslot,再通過api函式writefile()來將資料寫入到訊息佇列中。  

與此相類似,pipe也是由server端建立的,**如下:  

pipe = createnamedpipe(ppipename, pipe_access_duplex, pipe_type_message |pipe_readmode_message | pipe_wait, pipe_unlimited_instances, bufsize,bufsize, 20000, null);

接著,client端就可以通過一般的檔案api讀寫資料,**如

pipe = createfile(ppipename, generic_read | generic_write, 0, null, open_existing,0,null);

success = writefile(pipe, pmessage, strlen(pmessage) + 1, &byteswritten, null);

pipe分兩種,即命名pipe和匿名pipe。匿名pipe是以控制代碼而不是以名字來進行標識的,因而也就限制了它只能在同一臺機器上通訊,而不能應用於網路。命名pipe則提供了以名字來進行標識,所以能在網路上的其它任何地方開啟它。需要注意的是:命名pipe只能在 win nt而不是win 95上建立(即server

端),client端則可以是任意平台。  

pipe既可以單向通訊也可以雙向通訊,mailslot則只能單向通訊。client端可以傳送訊息給mailslot,但不能接收訊息;如果你想要接收訊息,則只能建立乙個新的mailslot。但mailslot有乙個很大的優點:它支援資料廣播。也就是說,若client端傳送一條訊息,

則整個網路中的同名物件都能收到。這是因為mailslot的名字的作用域只是在本台機器上,所以可在不同機器上建立同名的mailslot,當client端發來訊息時則每一台機上的mailslot都得到了該訊息的乙份拷貝,並在本機上作出相應的反應。mailslot的最大缺陷是不可靠,因為它的資料是以資料報格式來傳送

的,網路錯誤或負荷過重都會導致資料丟失。  

安卓activity之間互相通訊的問題

問題描述 大俠,如果我想在activity a中啟動activity b,然後activity a還能向b傳送狀態資訊,b再根據a傳送來的狀態決定自身的變化,比如a傳送退出命令,b接收之後就finish,這樣的想法能實現嗎?之所有有這樣的需求是因為,比如在登入的時候,考慮到網路延遲的關係,在使用者點...

裝置驅動程式通知應用程式的幾種方法

效能不穩定 其次,應用程式的可移植性變差。為了保證作業系統的安全 補充版 中,介紹了各部分實現的部分 結 語在目前流行的windows作業系統中,裝置驅動程式是操縱硬體的最底層軟體介面。它向上提供與硬體無關的使用者介面,向下直接進行i o 硬體中斷 dma和記憶體訪問等操作。它將應用程式與硬體細節遮...

驅動程式和應用程式之間通訊

正文 q 請問有什麼方法實現驅動程式主動和應用程式進行實時通訊,而不用應用程式採用定時查詢的方法?比如驅動有一事件發生需要立即通知應用程式,或驅動程式需要向應用程式讀取一些內容.a 有乙個很容易的方式,在驅動程式和應用程式之間用乙個事件。在應用程式createfile的時候,驅動程式iocreate...