命名管道 TCP IP協議 匿名管道

2021-09-30 10:47:11 字數 1684 閱讀 6976

對於命名管道,通常網路通訊互動性更強。乙個對等項直到另乙個對等項使用讀取命令請求資料時才傳送資料。在開始讀取資料前,網路讀取一般包括一系列窺視命名管道的資訊。這在慢速網路中可能花費非常多並導致過多的網路流量,其它的網路客戶端反過來也會受到影響。

闡明所討論的是本地管道還是網路管道也很重要。如果伺服器應用程式在執行 microsoft® sql server® 2000 例項的計算機上本地執行,則可以選擇本地命名管道協議。本地命名管道以核心模式執行且速度非常快。

對於 tcp/ip 套接字,資料傳輸的效率更高,開銷也更少。資料傳輸還可以利用 tcp/ip 套接字效能增強機制的優點,如開視窗、延遲確認等,這在慢速網路中可能非常有益。對於應用程式的不同型別,這類效能差異可能非常大。

tcp/ip 套接字還支援待辦事項佇列,當試圖連線到 sql server 時,與可能導致管道忙錯誤的命名管道相比,該佇列可以提供有限的平穩效果。

一般情況下,套接字在慢速 lan、wan 或撥號網路中效果較佳,而當網路速度不成問題時命名管道則是更好的選擇,因為其功能更強、易於使用且提供多種配置選項。 

命名管道(named pipes)

命名管道提供了乙個確認的傳送技術。與網路上的廣播方式不同,你通過乙個命名管道與另一台機器建立乙個不同的連線。如果連線中斷。例如是由於一台機器關掉或者網路的某部分有故障,連線的雙方都可以在嘗試傳送或者接收時,馬上知道中斷的資訊。通過乙個命名管道,可確保包順序到達。命名管道的唯一問題是你不能廣播包了。要廣播任何資訊,所有的目標機器都必須與**的伺服器建立乙個連線,伺服器必須分別傳送資訊到各個不同的機器上。

命名管道的建立只比mailslot難一點。列表4和5的程式展示了如何在兩個使用命名管道的應用之間,建立乙個簡單的點對點連線。首先執行列表4中的接收程式,然後在同一機器上執行列表5中的傳送程式。該程式將詢問你要連線的機器名字。由於你在同一部機器上執行傳送和接收的程式,因此可輸入「.」或者是你的機器名。你將會看到每隔5秒左右,就有乙個資訊由傳送者傳到接收者上。當你關閉傳送者的時候,在接收者上就會馬上出現乙個資訊,指示它已經檢測出管道連線中斷。如果只啟動傳送的程式,傳送者將會馬上出錯,因為它不能建立乙個連線。與mailslot不同,管道可以告訴我們另一端的工作是否正常。

命名管道連線在網路上的使用與在同一部機器上一樣簡單。例如,如果列表4中的伺服器程式執行在一部稱為「orion」的機器上,使用與該機器同樣的帳號和密碼在另一台不同的機器上登入,在上面執行列表5的程式,要求機器名時,輸入「orion」的名字。這樣連線就被正確地建立起來了。要注意一點,使用命名管道的時候,你必須要知道執行伺服器的機器名字。

你還要知道,如果使用另乙個使用者來嘗試連線接收器時,連線將會失敗。例如使用者「jones」在「orion」的機器上執行接收程式,當使用者「smith」嘗試由另一台機器進行連線時,連線將會失敗,並顯示乙個「拒絕訪問」的錯誤。這是nt的安全系統造成的

管道分為兩種型別:匿名管道(unnamedpipe)和命名管道 (namedpipe)。匿名管道是不命名的,它用於本地系統中父程序與 它啟動的子程式之間的通訊。而命名管道由乙個名字來標識,以使 客戶端和服務端應用程式通過它可以進行彼此之間的通訊。只有在 windows nt中才能真正實現命名管道 ,郵路(mailslot)是一種遠端系統程序之間進行通訊的理想方 式。

windows中的匿名管道通訊機制是一種系統內部高效的資料通訊 和同步機制,它不生成額外的檔案,又能有效地管理通訊過程中的 記憶體。這種隱藏的資料通訊方式為應用程式程序間的通訊和同步提 供了極大的靈活性。

**:

命名管道 匿名管道

有名字 則可以通過 名字 開啟相同的管道進行通訊,沒有名字 在核心中沒有明確標識 只能通過 子程序複製父程序的方式實現通訊,複製了檔案描述符 匿名管道只能用於具有親緣關係的程序間通訊。只要在建立程序之前建立管道,後邊的程序都可以實現通訊。命名管道可用於同一主機任意程序間通訊 作業系統在核心提供的一塊...

命名管道和匿名管道

我們知道程序間是可以通訊的。可以達到資料傳輸 資源共享 事件通知 程序控制等目的。程序間通訊主要包括管道 系統ipc,套接字等。管道分為三種 1 普通管道 int pipe int fds 2 返回值0表示成功,1表示失敗 fd 0 讀 fd 1 寫 子程序往管道中寫資料,寫資料時要關閉讀端 父程序...

命名管道與匿名管道

匿名管道 父程序 include include main process information pp 定義結構體security attributes變數 char text 匿名管道程式測試!dword writetext ss.nlength sizeof ss 填充結構體中的各成員 ss....