共用方式為


使用SIO_ADDRESS_LIST_SORT

SIO_ADDRESS_LIST_SORT IOCTL 可讓應用程式開發人員排序 IPv6 和 IPv4 目的地地址的清單,以判斷建立連線的最佳可用位址。 Windows XP 和更新版本支援 SIO_ADDRESS_LIST_SORT IOCTL。

在 Windows Vista 和更新版本上,CreateSortedAddressPairs 函式會採用提供的潛在 IP 目的地位址清單、將目的地位址與主計算機的本機 IP 位址配對,並根據哪一組位址組最適合兩個對等之間的通訊。 應該使用 CreateSortedAddressPairs 函式,而非適用於 Windows Vista 和其後版本的 SIO_ADDRESS_LIST_SORT IOCTL。

下列各節說明 SIO_ADDRESS_LIST_SORT的使用考慮。

參數

傳遞至 SIO_ADDRESS_LIST_SORT 的緩衝區是 SOCKET_ADDRESS_LIST 結構。 清單中的每個 SOCKET_ADDRESS 都必須以 SOCKADDR_IN6 格式。

SIO_ADDRESS_LIST_SORT IOCTL 會排序 Windows Vista 和更新版本的 IPv6 和 IPv4 位址。 清單中要排序的任何 IPv4 位址都必須以 IPv4 對應的 IPv6 位址格式。 如需 IPv4 對應 IPv6 位址格式的詳細資訊,請參閱 Dual-Stack Sockets

在 Windows Server 2003 和 Windows XP 上,SIO_ADDRESS_LIST_SORT 只會排序 IPv6 位址。 不支援 IPv4 對應 IPv6 位址格式中的 IPv4 位址。

在輸出中,如果 IOCTL 程式代碼判斷某些目的地地址無效,iAddressCountSOCKET_ADDRESS_LIST 結構的成員可能會小於輸入。

排序判斷

SIO_ADDRESS_LIST_SORT IOCTL 之 IPv6 位址的排序順序是以前置詞原則數據表為基礎。 前置詞原則數據表是使用 Netsh.exe 命令行公用程式來設定。 下列命令行代碼段說明基本 Netsh.exe 前置詞原則數據表組態命令:

netsh interface ipv6 show prefixpolicies
netsh interface ipv6 add prefixpolicy ::/96 3 4
netsh interface ipv6 delete prefixpolicy ::/96
netsh interface ipv6 set prefixpolicy ::/96 3 4

注意

在 Windows Server 2003 和 Windows XP 上,上面所列的第一個 netsh 命令如下所示。 所有其他相關命令都相同。

 

netsh interface ipv6 show prefixpolicy

地址排序也由IETF發佈的針對因特網通訊協定第6版(IPv6)的預設位址選擇所述的RFC 3484演算法決定。 如需詳細資訊,請參閱 https://www.ietf.org/rfc/rfc3484.txt。 (此資源只能以英文提供。

SIO_ADDRESS_LIST_SORT IOCTL 會排序位址,從最佳到最差,並視需要填入 sin6_scope_id 成員。 針對網站區域位址,SIO_ADDRESS_LIST_SORT填入範圍識別碼,或移除位址。

SIO_ADDRESS_LIST_SORT IOCTL 會忽略系結至套接字的來源地址,並且只會針對傳遞作為參數的目的地位址清單進行排序。

在 Windows Vista 及後續版本中,應該使用 CreateSortedAddressPairs 函式,而非使用 SIO_ADDRESS_LIST_SORT IOCTL。 CreateSortedAddressPairs 函式會傳回位址組清單,其中包含本機來源位址和目的地位址。 這可讓應用程式針對每個目的地位址使用正確的來源位址。 應用程式也可以藉由尋找特定來源位址來篩選結果。 在結果中。

要求

SIO_ADDRESS_LIST_SORT IOCTL 定義於 Winsock2.h 頭檔中。 在 Windows Vista 和更新版本的 Microsoft Windows 軟體開發工具包 (SDK) 上,頭檔的組織已變更,且 SIO_ADDRESS_LIST_SORT IOCTL 的組織定義於 Ws2def.h 頭檔。 請注意,Ws2def.h 頭文件會自動包含在 Winsock2.h中,而且不應該直接使用。

Windows XP 和更新版本支援 SIO_ADDRESS_LIST_SORT IOCTL。

CreateSortedAddressPairs