指定通訊協定序列

伺服器應用程式必須在透過網路與用戶端通訊時,選取一或多個要使用的通訊協定序列。 通訊協定序列的選擇與網路相關。 請參閱 解譯系結資訊選取通訊協定順序

您的伺服器程式可能會允許用戶端使用網路支援的任何通訊協定順序進行連線。 若要這樣做,請叫用 RpcServerUseAllProtseqs 並傳遞RPC_C_PROTSEQ_MAX_REQS_DEFAULT作為第一個參數。 不過,這不是建議的方法。 相反地,針對本機呼叫使用 ncalrpcncacn_ip_tcp遠端呼叫的ncacn_HTTP 通常就已足夠。 異質網路並不常見,而且幾乎所有網路都支援 TCP/IP。

如果您想要讓用戶端將動態端點的埠配置限制為特定的埠範圍,請改為呼叫 RpcServerUseAllProtseqsEx 。 此函式專屬於 Microsoft RPC,對於通過防火牆的遠端程序呼叫而言非常實用。 它會使用額外的參數,將埠配置控制旗標傳遞至 函式。 請參閱 設定埠配置和選擇性系結的登錄

當您開發伺服器的介面時,您可以在 MIDL 檔案中指定通訊協定序列和端點資訊。 如果您這麼做,您的伺服器應該使用 RpcServerUseAllProtseqsIf 來註冊 IDL 檔案中提供的所有通訊協定序列和相關聯的端點資訊。 此外,還有對應的 RpcServerUseAllProtseqsIfEx 函式,也允許伺服器傳遞埠配置控制旗標。

如果您想要設定用戶端和伺服器程式以與指定的通訊協定序列通訊,伺服器應用程式應該呼叫 RpcServerUseProtseq。 如需 Microsoft RPC 通訊協定序列的完整清單,請參閱 通訊協定序列常數

Microsoft RPC 也提供 RpcServerUseProtseqEx ,讓應用程式能夠選取特定的通訊協定序列並控制動態埠配置。

除了連線導向通訊協定之外,Microsoft RPC 也支援資料包 (無連線) 通訊協定。 建議使用連線導向通訊協定;datagram 通訊協定的功能集與連接導向通訊協定不同,而且只有在分散式系統開發人員需要只有資料包通訊協定中可用的功能時才使用。 使用資料包通訊協定時可用的部分功能如下:

  • 資料包支援 UDP 和 IPX 無連線傳輸通訊協定。
  • 由於不需要建立和維護連線,因此資料包 RPC 通訊協定需要較少的資源負荷。
  • 資料包可加快系結速度。
  • 如同連線導向 RPC,資料包 RPC 呼叫預設為 非冪性。 這表示呼叫保證不會多次執行。 不過,函式可以在 IDL 檔案中標示為等冪性,告知 RPC 對回應單一用戶端要求多次執行函式是無害的。 這可讓執行時間在伺服器上維持較少的狀態。 請注意,等冪呼叫只會在不穩定的網路上罕見的情況下重新執行。
  • Datagram RPC 支援 廣播 IDL 屬性。 廣播可讓用戶端同時對多部伺服器發出訊息。 這可讓用戶端找出網路上數個可用伺服器的其中一個,或同時控制多部伺服器。 請注意,資料包廣播只在本機連結內有效,而且通常不會跨路由器。 廣播呼叫是隱含等冪的。 如果呼叫包含 [out] 參數,則只會傳回第一個伺服器回應。 一旦伺服器回應,所有未來透過該系結控制碼的 RPC 都會傳送至該伺服器,包括廣播屬性的呼叫。 若要傳送另一個廣播,請建立新的系結控制碼,或在現有的控制碼上呼叫 RpcBindingReset
  • 資料包 RPC 支援 IDL 屬性。 這可讓用戶端傳送呼叫給伺服器,而不需要等待回應或確認。 呼叫不能包含 [out] 參數。 使用 [可能] 呼叫的呼叫是隱含的等冪。