開始使用 Winsock

本節是開始使用 Windows Sockets 程式設計的逐步指南。 其設計目的是要讓您瞭解基本的 Winsock 函式和資料結構,以及它們如何一起運作。

我們在本主題中使用的用戶端和伺服器應用程式是非常基本的用戶端和伺服器。 Microsoft Windows 軟體發展工具組 (SDK) 隨附的範例中包含更進階的程式碼範例。

用戶端和伺服器應用程式的前幾個步驟都相同。

下列文章說明建立 Winsock 用戶端應用程式的其餘步驟。

下列文章說明建立 Winsock 伺服器應用程式的其餘步驟。

這些基本範例的完整原始程式碼。

進階 Winsock 範例應用程式

GitHub 上提供數個更進階 的 Winsock 用戶端和伺服器範例應用程式 。 此處列出它們的順序從較高到較低的效能,並位於下列目錄中:

  • Iocp

    該資料夾包含三個使用 I/O 完成埠的範例程式。 這些套裝程式括:使用WSAAccept函式的 Winsock 伺服器 iocpserver 、使用AcceptEx函式的 Winsock 伺服器 iocpserverex ,以及用來測試這些伺服器之一的簡單多執行緒 Winsock 用戶端 iocpclient

    伺服器程式支援使用 TCP/IP 進行連線的多個用戶端,以及傳送伺服器接著回顯給用戶端的任意大小資料緩衝區。 為了方便起見,已開發簡單的用戶端程式 iocpclient 來連接並持續將資料傳送至伺服器,以使用多個執行緒來壓力它。 使用 I/O 完成埠的 Winsock 伺服器可提供最高的效能。

  • 重疊

    此資料夾包含使用重迭 I/O 的伺服器程式範例。 此範例程式會使用 AcceptEx 函式和重迭的 I/O,有效地處理來自用戶端的多個非同步連線要求。 伺服器會使用 AcceptEx 函式,在單一執行緒 Win32 應用程式中多工不同的用戶端連線。 使用重迭的 I/O 允許更大的延展性。

  • WSAPoll

    此資料夾包含示範 WSAPoll 函式使用的基本範例程式。 結合的用戶端和伺服器程式是非封鎖的,並使用 WSAPoll 函式來判斷何時可以傳送或接收而不封鎖。 此範例僅供說明,且不是高效能伺服器。

  • simple

    此資料夾包含三個基本範例程式,可示範伺服器使用多個執行緒。 這些套裝程式括:簡單的 TCP/UDP 伺服器 simples ;僅限 TCP 的伺服器 simples_ioctl ,它會使用 Win32 主控台應用程式中的 select 函式來支援多個用戶端要求;以及用戶端 TCP/UDP 程式, simplec 用於測試伺服器。 伺服器示範如何使用多個執行緒來處理多個用戶端要求。 該方法具有延展性問題,因為會為每個用戶端要求建立個別執行緒。

  • accept

    此資料夾包含基本範例伺服器和用戶端程式。 伺服器示範如何使用 select 函式使用非封鎖接受,或使用 WSAAsyncSelect 函式進行非同步接受。 此範例僅供說明,且不是高效能伺服器。