共用方式為


Windows 套接字:串流套接字

本文說明數據流套接字,這是兩種可用的 Windows 套接字類型之一。 (另一種類型是 數據報套接字。)

數據流套接字提供沒有記錄邊界的數據流:可雙向的位元組流(應用程式是全雙工:它可以透過套接字傳輸和接收)。 串流可以依賴來傳遞循序、無重複的數據。 (“Sequenced” 表示封包會依傳送順序傳遞。“不重複”表示每個封包僅被接收一次。保證數據流訊息的接收,且數據流非常適合處理大量數據。

網路傳輸層可能會將數據分割或分組為合理大小的封包。 類別 CSocket 會為您處理封裝和解除封裝。

串流是以明確連線為基礎:套接字 A 要求與套接字 B 的連線;套接字 B 接受或拒絕連線要求。

電話通話是一個很好的串流類比。 在正常情況下,接收方會聽到您按您說出的順序說的話,而不會重複或遺失。 例如,數據流套接字適用於文件傳輸通訊協定 (FTP) 之類的實作,有助於傳輸任意大小的 ASCII 或二進位檔。

比起資料報套接字,資料流套接字更適合用於必須保證資料到達以及資料大小很大的情況。 如需串流套接字的詳細資訊,請參閱 Windows 套接字規格。 此規格可在 Windows SDK 中使用。

使用串流套接字相較於設計用資料報套接字來廣播到網路上所有接收的套接字的應用程式,可能更佳,因為

  • 廣播模型受限於網路洪水(或“風暴”)問題。

  • 後續採用的用戶端-伺服器模型更有效率。

  • 數據流模型提供可靠的數據傳輸,其中數據報模型沒有。

  • 最終模型利用 CArchive 類別賦予 CSocket 類別的能力,使 Unicode 和 ANSI 套接字應用程式之間的通訊成為可能。

    備註

    如果您使用 類別 CSocket,則必須使用數據流。 如果您將套接字類型指定為SOCK_DGRAM,MFC 斷言就會失敗。

另請參閱

MFC 中的 Windows 套接字
Windows 套接字:背景