中文名 | 管道通信 | 外文名 | Communication Pipeline |
---|
命名管道程序設(shè)計(jì)的實(shí)現(xiàn)
1.命名管道Server和Client間通信的實(shí)現(xiàn)流程
(1)建立連接:服務(wù)端通過(guò)函數(shù)CreateNamedPipe創(chuàng)建一個(gè)命名管道的實(shí)例并返回用于今后操作的句柄,或?yàn)橐汛嬖诘墓艿绖?chuàng)建新的實(shí)例。如果在已定義超時(shí)值變?yōu)榱阋郧埃幸粋€(gè)實(shí)例管道可以使用,則創(chuàng)建成功并返回管道句柄,并用以偵聽(tīng)來(lái)自客戶(hù)端的連接請(qǐng)求,該功能通過(guò)ConnectNamedPipe函數(shù)實(shí)現(xiàn)。
另一方面,客戶(hù)端通過(guò)函數(shù)WaitNamedPipe使服務(wù)進(jìn)程等待來(lái)自客戶(hù)的實(shí)例連接,如果在超時(shí)值變?yōu)榱阋郧?,有一個(gè)管道可以為連接使用,則WaitNamedPipe將返回True,并通過(guò)調(diào)用CreateFile或CallNamedPipe來(lái)呼叫對(duì)服務(wù)端的連接。此時(shí)服務(wù)端將接受客戶(hù)端的連接請(qǐng)求,成功建立連接,服務(wù)端ConnectNamedPipe返回True,客戶(hù)端CreateFile將返回一指向管道文件的句柄。
從時(shí)序上講,首先是客戶(hù)端通過(guò)WaitNamedPipe使服務(wù)端的CreateFile在限時(shí)時(shí)間內(nèi)創(chuàng)建實(shí)例成功,然后雙方通過(guò)ConnectNamedPipe和CreateFile成功連接,并返回用以通信的文件句柄,此時(shí)雙方即可進(jìn)行通信。
(2)通信實(shí)現(xiàn):建立連接之后,客戶(hù)端與服務(wù)器端即可通過(guò)ReadFile和WriteFile,利用得到的管道文件句柄,彼此間進(jìn)行信息交換。
(3)連接終止:當(dāng)客戶(hù)端與服務(wù)端的通信結(jié)束,或由于某種原因一方需要斷開(kāi)時(shí),客戶(hù)端應(yīng)調(diào)用CloseFile,而服務(wù)端應(yīng)接著調(diào)用DisconnectNamedPipe。當(dāng)然服務(wù)端亦可通過(guò)單方面調(diào)用DisconnectNamedPipe終止連接。最后應(yīng)調(diào)用函數(shù)CloseHandle來(lái)關(guān)閉該管道。
命名管道服務(wù)器端和客戶(hù)端代碼實(shí)現(xiàn)
客戶(hù)端
HANDLE CltHandle;
char pipenamestr[30];
sprintf(pipenamestr,″\\servername\pipe\pipename″)
if (WaitNamedPipe( pipenamestr, NMPWAIT—WAIT—FOREVER)==FALSE
// 管道名要遵循UNC,格式為\ \.\pipe\pipname,名字不分大小寫(xiě)。
AfxMessageBox(″操作失敗,請(qǐng)確定服務(wù)端正確建立管道實(shí)例!″);
Else
CltHandle=CreateFile(pipenamestr, GENERIC—READ|GENERIC—WRITE, FILE—SHARE—READ| FILE—SHARE—WRITE,NULL, OPEN—EXISTING,
//為了與命名管道連接,此參數(shù)應(yīng)一直為OPEN—EXISTING
FILE—ATTRIBUTE—ARCHIVE|FILE—FLAG—WRITE—THROUGH,
// FILE—FLAG—WRITE—THROUGH會(huì)使管道WriteFile調(diào)用處于阻塞狀態(tài),直到數(shù)據(jù)傳送成功。
NULL);
If (CltHandle== INVALID—HANDLE—VALUE)
AfxMessageBox(″管道連接失敗″);
Else
DoUsertTransactInfo();
//執(zhí)行用戶(hù)自定義信息交換函數(shù)——從管道讀、寫(xiě)信息。
……
服務(wù)端
HANDLE SvrHandle;
char pipenamestr[30];
sprintf(pipenamestr,″\\.\pipe\pipename″)
SvrHandle=CreateNamedPipe(pipenamestr,
PIPE—ACCESS—DUPLEX|FILE—FLAG—WRITE—THROUGH,
//阻塞模式,這種模式僅對(duì)″字節(jié)傳輸管道″操作有效。
FILE—WAIT|PIPE—TYPE—BYTE,
//字節(jié)模式
PIPE—UNLIMITED—INSTANCES,
128,128,
NULL,NULL);
// SECURITY—ATTRIBUTES結(jié)構(gòu)指針,描述一個(gè)新管道,確定子進(jìn)程的繼承權(quán),如果為NULL則該命名管道不能被繼承。
If (SvrHandle==INVALID—HANDLE—VALUE)
AfxMessageBox(″管道創(chuàng)建失敗,請(qǐng)確定客戶(hù)端提供連接可能!″);
Else
If (ConnectNamedPipe(SvrHandle,NULL)==FALSE)
AfxMessageBox(″建立連接失??!″);
Else
DoUsertTransactInfo();
//用戶(hù)自定義信息交換函數(shù)
……
關(guān)于Unix中的管道通信
從Unix System V 開(kāi)始,系統(tǒng)提供有名管道和無(wú)名管道兩種數(shù)據(jù)通信方式。
無(wú)名管道為建立管道的進(jìn)程和子進(jìn)程提供一種以比特流方式傳送信息的通信管道。在邏輯上可以看作是管道文件,在物理上由文件系統(tǒng)的高速緩沖區(qū)構(gòu)成,而很少起用外設(shè)。發(fā)送進(jìn)程利用文件系統(tǒng)的系統(tǒng)調(diào)用write (fd[1],buf,size)把buf中長(zhǎng)度為size的字符送入管道入口fd[1],接受進(jìn)程則使用系統(tǒng)調(diào)用read(fd[0],buf,size)從管道出口讀取信息到buf。管道按照先進(jìn)先出傳送消息。只能單向傳送。
建立無(wú)名管道的系統(tǒng)調(diào)用為int fd[2],pipe(fd)。-------參考教材計(jì)算機(jī)操作系統(tǒng)教程(第三版)清華大學(xué)出版社
使用靈活性
命名管道具有很好的使用靈活性,表現(xiàn)在:
1) 既可用于本地,又可用于網(wǎng)絡(luò)。
2) 可以通過(guò)它的名稱(chēng)而被引用。
3) 支持多客戶(hù)機(jī)連接。
4) 支持雙向通信。
5) 支持異步重疊I/O操作。
不過(guò),當(dāng)前只有Windows NT支持服務(wù)端的命名管道技術(shù)。
重新識(shí)別或用塊復(fù)制即可
管道通頭——各種管件有三通、彎頭、直接等。
商品名稱(chēng):管道通暢通洗凈劑 商品品牌:格瑞衛(wèi)康 包裝規(guī)格:105MM(長(zhǎng))X 25MM(寬)X 130MM(高) 產(chǎn)品描述: 本品含有碳酸鈉、苛性鈉、催化劑、鋁片等成份,是一種高性能疏通劑,能溶...
程序設(shè)計(jì)的注意事項(xiàng)
1.如果命名管道客戶(hù)端已打開(kāi),函數(shù)將會(huì)強(qiáng)迫關(guān)閉管道,用DisconnectNamedPipe關(guān)閉的管道,其客戶(hù)端還必須用CloseHandle來(lái)關(guān)閉最后的管道。
2. ReadFile和WriteFile的hFile句柄是由CreateFile及ConnectNamedPipe返回得到。
3.一個(gè)已被某客戶(hù)端連接的管道句柄在被另一客戶(hù)通過(guò)ConnectNamedPipe建立連接之前,服務(wù)端必須用DisconnectNamedPipe函數(shù)對(duì)已存在的連接進(jìn)行強(qiáng)行拆離。服務(wù)端拆離管道會(huì)造成管道中數(shù)據(jù)的丟失,用FlushFileBuffers函數(shù)可以保證數(shù)據(jù)不被丟失。
4.命名管道服務(wù)端可以通過(guò)新創(chuàng)建的管道句柄或已被連接過(guò)其他客戶(hù)的管道句柄來(lái)使用ConnectNamedPipe函數(shù),但在連接新的客戶(hù)端之前,服務(wù)端必須用函數(shù)DisconnectNamedPipe切斷之前的客戶(hù)句柄,否則ConnectNamedPipe 將會(huì)返回False。
5.阻塞模式,這種模式僅對(duì)“字節(jié)傳輸管道"操作有效,并且要求客戶(hù)端與服務(wù)端不在同一機(jī)器上。如果用這種模式,則只有當(dāng)函數(shù)通過(guò)網(wǎng)絡(luò)向遠(yuǎn)端計(jì)算機(jī)管道緩沖器寫(xiě)數(shù)據(jù)成功時(shí),才能有效返回。如果不用這種模式,系統(tǒng)會(huì)運(yùn)行缺省方式以提高網(wǎng)絡(luò)的工作效率。
6.用戶(hù)必須用FILE—CREATE—PIPE—INSTANCE 來(lái)訪(fǎng)問(wèn)命名管道對(duì)象。新的命名管道建立后,來(lái)自安全參數(shù)的訪(fǎng)問(wèn)控制列表定義了訪(fǎng)問(wèn)該命名管道的權(quán)限。所有命名管道實(shí)例必須使用統(tǒng)一的管道傳輸方式、管道模式等參數(shù)??蛻?hù)端未啟動(dòng),管道服務(wù)端不能執(zhí)行阻塞讀操作,否則會(huì)發(fā)生空等的阻塞狀態(tài)。當(dāng)最后的命名管道實(shí)例的最后一個(gè)句柄被關(guān)閉時(shí),就應(yīng)該刪除該命名管道。
格式:pdf
大?。?span id="5wxtpl5" class="single-tag-height">34KB
頁(yè)數(shù): 7頁(yè)
評(píng)分: 4.6
Linux 的管道通信 進(jìn)程通信的實(shí)用例子之一是 Unix 系統(tǒng)的管道通信。 Unix 系統(tǒng)從 SystemV 開(kāi)始提供有名 管道和無(wú)名管道兩種數(shù)據(jù)通信方式。 無(wú)名管道為建立管道的進(jìn)程及其子孫提供一條以比特流 方式傳送消息的通信 。該管道在邏輯上被看作管道文件,在物理上則由文件系統(tǒng)的高速緩 沖區(qū)構(gòu)成,而很少啟動(dòng)外設(shè)。有名管道可用于兩個(gè)無(wú)關(guān)的進(jìn)程之間的通信。 管道是 Linux 支持的最初 Unix IPC 形式之一,在 Linux 中是一種使用非常頻繁的通信 機(jī)制。從本質(zhì)上說(shuō), 管道也是一種文件, 但它又和一般的文件有所不同,管道可以克服使用 文件進(jìn)行通信的兩個(gè)問(wèn)題,具體表現(xiàn)為: ·限制管道的大小。實(shí)際上,管道是一個(gè)固定大小的緩沖區(qū)。在 Linux 中,該緩沖區(qū)的 大小為 1 頁(yè),即 4K 字節(jié),使得它的大小不象文件那樣不加檢驗(yàn)地增長(zhǎng)。使用單個(gè)固定緩沖 區(qū)也會(huì)帶來(lái)問(wèn)題, 比如在寫(xiě)管道時(shí)可能
格式:pdf
大?。?span id="pxuzs08" class="single-tag-height">34KB
頁(yè)數(shù): 15頁(yè)
評(píng)分: 4.6
管道通信畢業(yè)論文
本書(shū)重點(diǎn)闡述了長(zhǎng)輸油氣管道通信傳輸網(wǎng)的相關(guān)知識(shí),主要內(nèi)容包括通信基礎(chǔ)、油氣管道光纜網(wǎng)、油氣管道光通信傳輸設(shè)備、時(shí)鐘同步網(wǎng)、油氣管道衛(wèi)星通信網(wǎng)、光傳輸網(wǎng)管、傳輸網(wǎng)運(yùn)行維護(hù)以及油氣管道通信傳輸網(wǎng)發(fā)展趨勢(shì)等。
本書(shū)主要用作長(zhǎng)輸油氣管道通信運(yùn)行維護(hù)人員的培訓(xùn)教材,也可供長(zhǎng)輸油氣管道通信設(shè)計(jì)、施工、維護(hù)管理人員學(xué)習(xí)參考。
第一章 緒論
第一節(jié) 通信系統(tǒng)基本概念及分類(lèi)
第二節(jié) 通信網(wǎng)
第三節(jié) 油氣管道通信傳輸網(wǎng)
復(fù)習(xí)思考題
第二章 油氣管道光纜網(wǎng)
第一節(jié) 光纖
第二節(jié) 光纜
第三節(jié) 油氣管道光纜的同溝敷設(shè)
復(fù)習(xí)思考題
第三章 油氣管道光通信傳輸設(shè)備及組網(wǎng)
第一節(jié) 光通信傳輸技術(shù)演進(jìn)
第二節(jié) 光傳輸網(wǎng)主要技術(shù)
第三節(jié) 光傳輸技術(shù)在油氣管道傳輸網(wǎng)的應(yīng)用
復(fù)習(xí)思考題
第四章 時(shí)鐘同步網(wǎng)
第一節(jié) 同步網(wǎng)
第二節(jié) SDH傳輸網(wǎng)同步
第三節(jié) 管道SDH光傳輸時(shí)鐘同步網(wǎng)
復(fù)習(xí)思考題
第五章 油氣管道衛(wèi)星通信網(wǎng)
第一節(jié) 衛(wèi)星通信技術(shù)演進(jìn)
第二節(jié) 衛(wèi)星通信基礎(chǔ)知識(shí)
第三節(jié) 衛(wèi)星通信系統(tǒng)構(gòu)成
第四節(jié) 衛(wèi)星通信系統(tǒng)的技術(shù)體制
第五節(jié) VSAT衛(wèi)星通信技術(shù)
第六節(jié) 衛(wèi)星通信技術(shù)在油氣管道通信網(wǎng)的應(yīng)用
復(fù)習(xí)思考題
第六章 光傳輸網(wǎng)管
第一節(jié) 光傳輸網(wǎng)管基礎(chǔ)知識(shí)
第二節(jié) 油氣管道SDH光傳輸網(wǎng)網(wǎng)管系統(tǒng)
第三節(jié) 綜合網(wǎng)管
復(fù)習(xí)思考題
第七章 傳輸網(wǎng)運(yùn)行維護(hù)
第一節(jié) 光纜維護(hù)
第二節(jié) 通信系統(tǒng)維護(hù)
第三節(jié) 傳輸網(wǎng)運(yùn)行維護(hù)所需儀器儀表
第四節(jié) 運(yùn)行維護(hù)工作的信息化
復(fù)習(xí)思考題
第八章 油氣管道通信傳輸網(wǎng)發(fā)展趨勢(shì)
復(fù)習(xí)思考題
附錄 專(zhuān)用詞匯及縮略語(yǔ)
參考文獻(xiàn) 2100433B
叢書(shū)名中國(guó)石油天然氣集團(tuán)公司統(tǒng)編培訓(xùn)教材
版次1
印張26
條碼號(hào)9787518315062
裝幀平裝
出版社石油工業(yè)出版社
印刷時(shí)間2016.12
所屬分類(lèi)TE978
頁(yè)數(shù)414
字?jǐn)?shù)430千字
開(kāi)本1/16
CIP 數(shù)據(jù)CIP數(shù)據(jù)核字(2016)第236362號(hào)