RPC的 全稱 是Remote Procedure Call,即遠程過程調(diào)用協(xié)議,它基于client-server通訊模型,但客戶機與服務(wù)器并非一定是不同機器,RPC常常應(yīng)用于同一機器不同進程之間的通訊。RPC協(xié)議將發(fā)出請求的所有進程視為“client”,將接收請求的進程都定義為“server”,在網(wǎng)絡(luò)遠程訪問外設(shè)如打印機掃描儀等時RPC扮演了重要角色。
在Windows分布共享數(shù)據(jù)的有關(guān)進程中,經(jīng)常會用到RPC技術(shù)。在系統(tǒng)大量的工作中,如果隨意改變設(shè)置或者設(shè)置有不妥之處,就會遇到“RPC server unavailable”之類的出錯信息。那么具體癥狀有哪些呢?
一種是由于取消了系統(tǒng)的“文件打印共享”所致。由于RPC 協(xié)議的作用之一就是支持用戶調(diào)用網(wǎng)絡(luò)連接的外設(shè),取消共享便會導致用戶無法實現(xiàn)打印任務(wù),只會看到RPC的錯誤提示。另外,網(wǎng)絡(luò)連接有問題也會顯示RPC錯誤,當客戶端發(fā)出請求而網(wǎng)絡(luò)連接有問題時,客戶端對服務(wù)器的請求也會收到錯誤提示“RPC server unavailable”。
還有就是在名稱解析有問題時也會發(fā)生類似錯誤,比如當客戶端向服務(wù)器發(fā)出請求時采用的可能是服務(wù)器的名稱,或者IP地址或者端口號,假如RPC服務(wù)器的名稱映射到了錯誤的IP地址,那么客戶端就與服務(wù)器失聯(lián),從而發(fā)生RPC錯誤。
圖1 在“控制面板”中對防火墻設(shè)置RPC服務(wù)
防火墻之類的安全工具經(jīng)常會攔截通過TCP端口發(fā)來的請求,也會導致RPCs出錯提示。RPC還需要在Windows注冊表內(nèi)有相關(guān)的設(shè)置值,注冊表損壞也會導致 RPC服務(wù)失效。
首先應(yīng)該檢查防火墻,無論是Windows系統(tǒng)自身的防火墻,還是其他安全防御軟件都有可能阻止RPC請求。假如用戶安裝的是第三方防火墻,可將其配置為允許RPCs出入。假如我們不想改變防火墻設(shè)置,那么在允許的情況下暫時關(guān)閉防火墻,當完成RPC相關(guān)任務(wù)后再將其打開。
對于默認的Windows系統(tǒng)本身的防火墻,讓其支持RPC的具體設(shè)置方式為:打開Windows系統(tǒng)中的控制面板,點擊“系統(tǒng)和安全”,然后點擊“Windows防火墻”下的“允許應(yīng)用或功能通過Windows防火墻”(如圖1),在應(yīng)用列表窗口中勾 選“Remote Assistance Services”即可。
有時是因為網(wǎng)絡(luò)連接設(shè)置有問題導致RPC失效,尤其當錯誤發(fā)生在客戶端對服務(wù)器請求的情況下,此時不妨Ping一下。具體操作方式為:在“運行”窗口輸入將要運行的命令“ncpa.cpl” ,選擇“本地連接”后選擇“屬性”,在菜單列表中確認是否列出了“Internet 協(xié)議” 以及“文件和打印機網(wǎng)絡(luò)共享”,如果沒有則需要進行重新安裝 。
而且,支持RPC的多項服務(wù)需要在客戶端和服務(wù)器的后臺運行,這些服務(wù)進程通過運行命令“services.msc”可以進行查看,假如其中RPC服務(wù)沒有啟用,那么雙擊之后在屬性窗口內(nèi)選擇啟動甚至自動啟動。而在注冊表內(nèi),假如由于故障損壞導致“RpcSs”注冊值丟失也會引起RPC異常。假如用戶對注冊表之類比較棘手,可以借助第三方專用工具如SpeedyPC和Reimage等,它們不僅可以修復注冊表,也能解決RPC錯誤。