SO_PORT_SCALABILITY

SO_PORT_SCALABILITY通訊端選項可啟用通訊端的本機埠延展性。

SO_PORT_SCALABILITY

0x3006

SO_PORT_SCALABILITY通訊端選項可讓埠配置最大化,方法是將萬用字元埠多次配置給本機電腦上的不同本機位址埠組,藉此啟用本機埠延展性。

備註

注意:在支援SO_PORT_SCALABILITY和SO_REUSE_UNICASTPORT的平臺上,偏好使用 SO_REUSE_UNICASTPORT。

Proxy 伺服器環境有延展性問題,因為本機埠可用性有限。 解決此問題的其中一種方式是將更多 IP 位址新增至電腦。 不過,根據預設,搭配 系結 函式使用的萬用字元埠限制為本機電腦上的動態埠範圍大小, (最多 64K 個埠,但通常較不) ,不論本機電腦上的 IP 位址數目為何。 若要解決此問題,應用程式必須使用埠保留或使用啟發學習法來維護自己的埠集區。

為了避免每個需要延展性的應用程式管理自己的埠集區,以及為了在維護應用程式相容性的同時允許更大的延展性,Windows Server 2008 引進 了SO_PORT_SCALABILITY 通訊端選項,以協助最大化萬用字元埠配置。 埠配置最大化,方法是讓應用程式為每個唯一的本機位址和埠組配置萬用字元埠。 因此,如果本機電腦有四個 IP 位址,則最多 256 K 萬用字元埠 (64 K 埠× 4 個 IP 位址) 可由萬用字元 系結 函式要求配置。

當通訊端上設定 SO_PORT_SCALABILITY 通訊端選項,並針對指定的位址和萬用字元埠發出系 函式的呼叫時, (name 參數會設定為特定位址和埠 0) ,Winsock 會配置指定位址的埠。 此配置會以本機電腦上的所有可能 IP 位址和埠/每個位址為基礎。 如果使用 [SO_PORT_SCALABILITY ] 選項取得萬用字元埠,則該埠無法由另一個通訊端配置,而沒有 SO_PORT_SCALABILITY 選項。 此限制已就緒,以避免與假設無法重複使用萬用字元本機埠的應用程式回溯相容性問題。 請注意,這表示使用 SO_PORT_SCALABILITY 取得大量埠的應用程式可能會耗盡埠的繼承應用程式。 如果至少有一個具有 SO_PORT_SCALABILITY 的位址都已取得所有可用的暫時埠,則不需要通訊端選項,就無法再配置萬用字元埠。

若要有任何作用,必須先設定 SO_PORT_SCALABILITY 選項,才能呼叫 系結 函式。 以下概述如何在具有兩個位址的電腦上使用此功能的範例:

  • 通訊端函式是由建立通訊端的程式所呼叫。
  • 系統會呼叫 setockopt函式,以在新建立的通訊端上啟用SO_PORT_SCALABILITY通訊端選項。
  • 系統會呼叫 bind函式,在本機電腦的其中一個 IP 位址和埠 0 上執行系結。
  • 接著會呼叫 connect 函式以連線到遠端 IP 位址。 應用程式會視需要使用通訊端。
  • 通訊端函式是由相同的進程呼叫, (可能是不同的執行緒) 來建立第二個通訊端。
  • 系統會呼叫 setockopt函式,以在新建立的第二個通訊端上啟用SO_PORT_SCALABILITY通訊端選項。
  • 系結函式會使用本機電腦的第二個 IP 位址和埠 0 呼叫。 即使先前已配置所有埠,此呼叫仍會成功,因為本機電腦上有多個可用的 IP 位址,而且已在相同進程中的兩個通訊端上設定 SO_PORT_SCALABILITY 通訊端選項。
  • 接著會呼叫 connect 函式以連線到遠端 IP 位址。 應用程式會視需要使用第二個通訊端。

規格需求

需求
最低支援的用戶端
都不支援
最低支援的伺服器
Windows Server 2008 [僅限傳統型應用程式]
標頭
Ws2def.h

另請參閱

getsockopt

setsockopt

SOL_SOCKET通訊端選項

通訊端選項