MFC における Windows ソケット
更新 : 2007 年 11 月
メモ : |
---|
MFC (Microsoft Foundation Class) は、Windows Sockets 1 をサポートしていますが、Windows Sockets 2 はサポートしていません。Windows Sockets 2 は、Windows 98 から同梱されるようになり、Windows 2000 で提供されています。 |
MFC には、Windows ソケットを使用するネットワーク通信プログラムを記述するためのモデルが 2 つあり、2 つの MFC クラスとして実現されています。ここでは、この 2 つのモデルと MFC ソケットのサポートの詳細について説明します。"ソケット" とは、通信のエンドポイント、つまりアプリケーションがほかの Windows ソケット アプリケーションとネットワークを介して通信するときの出入り口になるオブジェクトです。
ソケットの概念についての説明を含む Windows ソケットの詳細については、「Windows ソケット : 予備知識」を参照してください。
ソケット プログラミング モデル
MFC における 2 つの Windows ソケット プログラミング モデルは、以下のクラスによってサポートされます。
CAsyncSocket
このクラスには、Windows ソケット API がカプセル化されています。CAsyncSocket は、ネットワークのプログラミング知識があるプログラマ用です。CAsyncSocket を使うと、ソケット API を直接プログラミングできるほか、ネットワーク イベント通知用のコールバック関数も使用できます。このクラスによって提供される抽象化は、ソケットを C++ で使用できるようにオブジェクト指向形式としてパッケージ化する以外には、ソケット関連の特定の Windows メッセージをコールバックに変換する機能だけです。詳細については、「Windows ソケット : ソケット通知」を参照してください。
CSocket
CAsyncSocket からの派生クラスであるこのクラスは、MFC の CArchive オブジェクトを使ってソケットを操作する高度な抽象化を実現しています。アーカイブでのソケットの使用方法は、MFC のファイル シリアル化プロトコルの使用方法とよく似ています。そのため、CAsyncSocket モデルよりも簡単に使用できます。CSocket のメンバ関数の多くは、Windows ソケット API をカプセル化した CAsyncSocket から継承したものです。したがって、このクラスの関数も一部使う必要があり、ソケットのプログラミング方法に関する全般的な知識が必要です。CSocket を使うと、多くの通信処理が自動的に処理されるので、API をそのまま使った場合または CAsyncSocket クラスを使った場合に比べて手間がかかりません。特に、CArchive の同期動作に不可欠のブロッキングが、CSocket では Windows メッセージのバックグラウンド処理によって行われます。
CSocket オブジェクトおよび CAsyncSocket オブジェクトを作成して使用する方法については、「Windows ソケット : アーカイブ付きソケットの使用」および「Windows ソケット : CAsyncSocket クラスの使い方」を参照してください。
Windows ソケット DLL
Microsoft Windows オペレーティング システムでは、Windows ソケットのダイナミック リンク ライブラリ (DLL: Dynamic Link Library) が提供されています。Visual C++ は、該当するヘッダー ファイルとライブラリ、および Windows ソケット仕様を提供します。
メモ : |
---|
Windows NT および Windows 2000 では、16 ビット アプリケーション用の Windows ソケットは WINSOCK.DLL によってサポートされます。32 ビット アプリケーションの場合は、WSOCK32.DLL によってサポートされます。16 ビットでも 32 ビットでも提供される API は同じですが、32 ビット版のパラメータは 32 ビットに拡張されています。Win32 では、スレッドの安全性も保証されます。 |
Windows ソケットの詳細については、次のトピックを参照してください。