> ## Documentation Index
> Fetch the complete documentation index at: https://devdocs.xbox.com/llms.txt
> Use this file to discover all available pages before exploring further.

# 遊戲網狀通訊：GDK 與 XDK 的差異

> Microsoft Game Development Kit 與 XBOX One Software Development Kit 之間遊戲網狀通訊的差異

Microsoft Game Development Kit (GDK) 已不再提供 Secure Sockets 和 XBOX Integrated Multiplayer (XIM)。Microsoft Game Development Kit (GDK) 遊戲可以改用下列替代方案。

* Azure PlayFab Party
  對於用戶端對用戶端通訊，建議遊戲使用 [PlayFab Party](/zh-TW/build/console-features/networking/game-mesh/playfab-party-intro-networking) API。這些 API 提供的功能類似於 XBOX One Software Development Kit 中的 Secure Sockets。這些 API 也提供安全通訊、透過通訊轉送進行的網路位址轉譯 (NAT) 周遊，以及語音和文字聊天功能。
* 資料包傳輸層安全性 (DTLS)
  遊戲也可以選擇使用 DTLS 來加密其封包承載。遊戲可以透過 `OpenSSL` 或 `Bcrypt` API 實作此功能，或使用封裝此類實作的中介軟體。所有通訊無論內容為何，都必須透過遊戲服務進行加密和驗證。如需此解決方案需求的詳細資訊，請參閱 [Microsoft Game Development Kit 遊戲的安全遊戲通訊](https://learn.microsoft.com/gaming/gdk/docs/gdk-dev/game-principles/security/communication-security/communication-security-impl/gc-secure-communication-impl)。

## Microsoft Game Development Kit (GDK) 與 XBOX One Software Development Kit 遊戲版本之間的遊戲通訊

建議遊戲在所有 XBOX 主機硬體上都使用 GDK。這樣便能使用統一的網路實作。在某些情況下，遊戲可能仍想要支援 XBOX One Software Development Kit 與 GDK 遊戲版本之間的網路通訊。

在此情況下，XBOX One Software Development Kit 遊戲無法使用 Secure Sockets API，因為這些 API 與 GDK 中的 Azure PlayFab Party API 在網路上不相容。建置於 Secure Socket 功能之上的 XIM API 也是如此。

在 XBOX One Software Development Kit 遊戲版本中使用 Secure Sockets 或 XIM 的遊戲，必須將遊戲的網路堆疊更新為 Azure PlayFab Party 或 DTLS 通訊。我們建議使用 Azure PlayFab Party 作為所有用戶端對用戶端通訊的解決方案。Azure PlayFab Party 也能簡化語音和文字聊天功能。

在 XBOX One Software Development Kit 遊戲版本中使用專用伺服器或轉送伺服器的遊戲，也可以採取相同做法，以啟用與 GDK 遊戲版本之間的網路通訊。所有通訊協定都應一律經過驗證、受到保護，並遵循安全性最佳做法。

## 網路初始化

在 Microsoft Game Development Kit (GDK) 中，您的遊戲會在 Game OS 啟動過程中盡早啟動。您可以開始從硬碟載入資產，並開始初始化圖形堆疊。這表示您的程式碼在網路服務甚至尚未啟動前就已在執行，因此會有一段期間無法安全地使用 Win32 網路 API。我們將這段期間定義為*網路初始化*期間，在此之後，網路才會被視為已初始化。網路初始化通常需要幾秒鐘，這在您的程式碼中可能會非常明顯。

在 XBOX One ERA 遊戲中，網路初始化會隱含且任意地讓原本具即時安全性的網路 API (例如 `WSAStartup` 或 `bind`) 停滯。在 Microsoft Game Development Kit (GDK) 中，網路初始化現在是一個明確的概念，您必須與之互動，才能使用任何 Win32 網路或安全性 API。

Microsoft Game Development Kit (GDK) 遊戲必須等到 `XNetworkingConnectivityHint::networkInitialized` 布林值設為 `true` 後，才能呼叫 `Winsock`、`WinHTTP`、`IP Helper`、`BCrypt`、`WinCrypt`、`Schannel` 中的任何網路 API，或任何其他 Win32 網路 API。在網路初始化之前呼叫這些 API 中的任何一個，都會導致不確定的行為，甚至可能導致處理程序隨機當機。

此外，相同的概念也適用於所有暫停/繼續循環。暫停時，Microsoft Game Development Kit (GDK) 遊戲應關閉所有網路和安全性控制代碼。接著，從網路的角度來看，Microsoft Game Development Kit (GDK) 遊戲應將繼續處理常式視同遊戲初次啟動，並再次等待網路完成初始化。

如需詳細資訊 (包括示範如何等待網路初始化的程式碼範例)，請參閱[網路初始化和連線能力](/zh-TW/build/console-features/networking/initialization-connectivity-networking)。

## 連接埠行為

在 XBOX One ERA 遊戲中，您必須在網路資訊清單中預先定義遊戲執行的每一個通訊端流程。在 Microsoft Game Development Kit (GDK) 中，資訊清單現已移除。XBOX One 主機上的連接埠現在的行為與 Windows PC 上相同：您可以在任何想要的連接埠上呼叫 `bind`，而該連接埠會允許傳輸控制通訊協定 (TCP) 和使用者資料包通訊協定 (UDP) 上的所有輸出流量及經請求的輸入流量。未經請求的輸入 UDP 和 TCP 流量會遭到封鎖。這表示不再允許 TCP 對等網路拓撲。Microsoft Game Development Kit (GDK) 遊戲應將 UDP 用於其遊戲流程。

Microsoft Game Development Kit (GDK) 遊戲現在也可以直接存取慣用的本機 UDP 多人遊戲連接埠。此連接埠代表平台所能提供、通往您的對等節點和伺服器的最佳連接埠，因為它有疑難排解和使用者設定作為支援。我們強烈建議您調整多人遊戲和語音流量以使用此連接埠，以提升整體連線成功率。

如需連接埠行為的詳細資訊，請參閱 [XBOX 主機連接埠行為](/zh-TW/build/console-features/networking/game-mesh/xbox-console-port-behavior)和[慣用的 UDP 多人遊戲連接埠](/zh-TW/build/console-features/networking/game-mesh/preferred-local-udp-multiplayer-port-networking)。

## 另請參閱

[網路初始化和連線能力](/zh-TW/build/console-features/networking/initialization-connectivity-networking)

[Microsoft Game Development Kit 遊戲的安全遊戲通訊](https://learn.microsoft.com/gaming/gdk/docs/gdk-dev/game-principles/security/communication-security/communication-security-impl/gc-secure-communication-impl)。

[HTTP 和 Web 通訊端](/zh-TW/build/console-features/networking/web-requests/http-networking)

[Windows 通訊端](/zh-TW/build/console-features/networking/game-mesh/winsock-intro-networking)

[Game Chat 2 簡介](/zh-TW/services/xbox-services/multiplayer/chat/game-chat2/game-chat-2-intro)

[Azure PlayFab Party](/zh-TW/build/console-features/networking/game-mesh/playfab-party-intro-networking)

[開始使用 XBOX Live API](/zh-TW/services/xbox-services/fundamentals/xbox-services-api/live-gs-xbl-apis)

[http\_call\_c](/zh-TW/reference/live/xsapi-c/http_call_c/http_call_c_members)

[慣用的 UDP 多人遊戲連接埠](/zh-TW/build/console-features/networking/game-mesh/preferred-local-udp-multiplayer-port-networking)


## Related topics

- [XBOX One Software Development Kit 移轉指南](/zh-TW/build/console-features/networking/xdk-migration/xdk-migration-toc.md)
- [XBOX 遊戲的遊戲網狀架構網路功能](/zh-TW/build/console-features/networking/game-mesh/index.md)
- [將 XDK 網路功能移轉至 XBOX GDK](/zh-TW/build/console-features/networking/xdk-migration/index.md)
- [遊戲網狀架構](/zh-TW/build/console-features/networking/game-mesh/game-mesh-toc.md)
- [GDK 與 XDK 之間的 Web 要求差異](/zh-TW/build/console-features/networking/xdk-migration/xdk-migration-web-requests-networking.md)
