次の方法で共有


Windows ソケット : ストリーム ソケット

この記事では、使用可能な 2 つの Windows ソケットの種類の 1 つであるストリーム ソケットについて説明します。 (もう 1 つの型は データグラム ソケットです)。

ストリーム ソケットは、レコード境界のないデータ フローを提供します。双方向にできるバイトストリームです (アプリケーションは全二重です。ソケットを介して送受信できます)。 ストリームは、シーケンス化された重複しないデータを配信するために依存できます。 ("Sequenced" とは、パケットが送信された順序で配信されることを意味します。"重複なし" とは、特定のパケットを 1 回だけ取得することを意味します)。ストリーム メッセージの受信が保証され、ストリームは大量のデータの処理に適しています。

ネットワーク トランスポート層は、適切なサイズのパケットにデータを分割またはグループ化する場合があります。 CSocket クラスは、パッキングとアンパックを処理します。

ストリームは明示的な接続に基づいています。ソケット A はソケット B への接続を要求します。ソケット B は、接続要求を受け入れるか拒否します。

電話呼び出しは、ストリームに適した例えです。 通常の状況では、受信側は、重複や損失なしに、あなたが言う順序であなたが言うことを聞きます。 ストリーム ソケットは、たとえば、任意のサイズの ASCII またはバイナリ ファイルの転送を容易にするファイル転送プロトコル (FTP) などの実装に適しています。

データが到着することが保証される必要がある場合、およびデータ サイズが大きい場合は、ストリーム ソケットがデータグラム ソケットに適しています。 ストリーム ソケットの詳細については、Windows ソケットの仕様を参照してください。 この仕様は、Windows SDK で入手できます。

ストリーム ソケットの使用は、ネットワーク上のすべての受信ソケットへのブロードキャストにデータグラム ソケットを使用するように設計されたアプリケーションよりも優れている可能性があります。

  • ブロードキャスト モデルは、ネットワークの洪水 (または "storm") の問題の影響を受けます。

  • その後採用されるクライアント/サーバー モデルの方が効率的です。

  • ストリーム モデルは、データグラム モデルでは提供されない信頼性の高いデータ転送を提供します。

  • 最終的なモデルでは、クラス CArchive がクラス CSocket に役立つ Unicode ソケット アプリケーションと ANSI ソケット アプリケーション間で通信する機能を利用します。

    クラス CSocketを使用する場合は、ストリームを使用する必要があります。 ソケットの種類を SOCK_DGRAMとして指定すると、MFC アサーションは失敗します。

こちらも参照ください

MFC の Windows ソケット
Windows ソケット: バックグラウンド