Windows ソケット : 予備知識

ここでは、Windows ソケットの性質と用途について説明します。 以下の内容についても説明します。

  • ソケットの定義

  • SOCKET データ型

  • ソケットの用途

Windows ソケットの仕様では、Microsoft Windows 用にバイナリ対応ネットワーク プログラミング インターフェイスが定義されています。 Windows ソケットはカリフォルニア大学バークレー校で開発された Berkeley Software Distribution (BSD 4.3) 版の UNIX ソケットをベースにしています。 この仕様には、BSD スタイルのソケットと、Windows 固有の拡張機能が規定されています。 Windows ソケットを使うと、Windows ソケット API に準拠したあらゆるネットワークを経由してアプリケーション間で通信できます。 Win32 では、Windows ソケットによってスレッドの安全性が保証されます。

多くのネットワーク ソフトウェアの販売元は、伝送制御プロトコル/インターネット プロトコル (TCP/IP)、Xerox ネットワーク システム (XNS)、Digital Equipment 社の DECNet プロトコル、Novell 社のインターネット パケット交換/順次編成パック交換 (IPX/SPX) などのネットワーク プロトコルに準拠した Windows ソケットをサポートしています。 現在の Windows ソケット仕様で定義されているソケットの抽象化は TCP/IP 用ですが、どのネットワーク プロトコルでも Windows ソケットを実装した独自のダイナミック リンク ライブラリ (DLL: Dynamic Link Library) を用意するだけで、Windows ソケット準拠になります。 Windows ソケットを使って記述されている商用アプリケーションの例として、X Windows サーバー、端末エミュレーター、電子メール システムがあります。

注意

Windows ソケットの目的は、基盤になっているネットワークを意識させないことです。つまり、ネットワークについて詳しく知らなくても、ソケットをサポートするネットワークならば、どのネットワーク上でもアプリケーションを実行できます。 したがって、この資料では、ネットワーク プロトコルの詳細については説明しません。

MFC (Microsoft Foundation Class) ライブラリは、Windows ソケット API を使ったプログラムをサポートするために、2 つのクラスを提供しています。 1 つは高度な抽象化を行う CSocket であり、ネットワーク通信のプログラミングを単純化します。

Windows ソケットの仕様、Windows ソケット:オープン インターフェイス ネットワーク コンピューティングの下で Microsoft windows、バージョン 1. 1 では、オープン ネットワーク標準として個人、法人、TCP/IP コミュニティでの大規模なグループによって開発され、を自由に利用できます。 現時点のソケット プログラミング モデルは、インターネット プロトコル スイートを使って、単一の "通信ドメイン" をサポートします。 この仕様は Windows SDK にあります。

ヒント

ソケットはインターネット プロトコル スイートを使用するため、"情報ハイウェイ" でインターネット通信をサポートするアプリケーションにとって最適な手段といえます。

ソケットの定義

ソケットは通信のエンドポイントです。つまり、Windows ソケット アプリケーションは、このオブジェクトをとおしてネットワーク経由のデータ パケット交換を行います。 ソケットには型があり、実行プロセスと対応付けられます。名前を付けることもできます。 現時点では、ソケットの通信相手は同一の "通信ドメイン" 内にあり、インターネット プロトコル スイートを使う別のソケットに限られます。

ソケットには 2 種類ありますが、両方とも双方向ソケットです。つまり、両方向同時に通信できるデータ フローです (全二重)。

次の 2 種類のソケットがあります。

  • ストリーム ソケット

    ストリーム ソケットは、レコード境界のないデータ フローを提供します。バイトのストリーム。 ストリームの受け渡しおよびその正しいシーケンスは保証されており、重複することはありません。

  • データグラム ソケット

    データグラム ソケットは、レコード単位のデータ フローをサポートします。しかし、このデータ フローの受け渡しは保証されません。したがって、シーケンスや非重複は保証されません。

"シーケンスが守られる" とは、パケットが送出時の順番で配達されることです。■訳文不要■ 非重複" とは、各パケットが 1 回しか配達されないことです。

注意

XNS などの一部のネットワーク プロトコルでは、レコードをバイト ストリームではなく、レコード単位のストリームにできます。 ただし、最も一般的な TCP/IP プロトコルでは、ストリームはバイト ストリームです。 Windows ソケットでは、基盤となるプロトコルに依存しない抽象化レベルが提供されます。

これらの種類についてと参照してどのような状況でを使用してソケットの種類Windows ソケット:ストリーム ソケットWindows ソケット:データグラム ソケット

SOCKET データ型

MFC の各ソケット オブジェクトには、Windows ソケット オブジェクトへのハンドルがカプセル化されています。 ハンドルのデータ型は SOCKET です。 SOCKET ハンドルは、Windows の HWND に似ています。 MFC のソケット クラスでは、カプセル化されたハンドルを操作できます。

SOCKET データ型については、Windows SDK で詳しく説明されています。 「Windows Sockets」の「Socket Data Type and Error Values」を参照してください。

ソケットの用途

ソケットは、少なくとも次の 3 つの通信コンテキストで使用できます。

  • クライアント サーバー モデル

  • ピアツーピア シナリオ (チャット アプリケーションなど)

  • リモート プロシージャ コール (RPC)。受信側アプリケーションにメッセージを関数呼び出しとして解釈させます。

ヒント

通信の両端を記述するときは、MFC ソケットの理想的な場合です:MFC では、両方の端を使用してください。 非 MFC アプリケーションとの通信時の管理方法など、このトピックの詳細についてを参照してくださいWindows ソケット:バイトの順序付け

詳細については、Windows ソケットの仕様を参照してください。ntohs, ntohl, htons, htonl. また、次のトピックも参照してください。

参照

概念

MFC における Windows ソケット