WSADATA 構造体
更新 : 2007 年 11 月
WSADATA 構造体は AfxSocketInit グローバル関数が返す Windows ソケット初期化情報を保持します。
struct WSAData {
WORD wVersion;
WORD wHighVersion;
char szDescription[WSADESCRIPTION_LEN+1];
char szSystemStatus[WSASYSSTATUS_LEN+1];
unsigned short iMaxSockets;
unsigned short iMaxUdpDg;
char FAR * lpVendorInfo;
};
パラメータ
wVersion
Windows ソケット DLL が呼び出し側に使用を求める Windows ソケット仕様のバージョンです。wHighVersion
この DLL がサポートしている Windows ソケット仕様の最も高いバージョンです。通常、これは wVersion と同じです。szDescription
Windows ソケット DLL が、発売元識別を含む Windows ソケットの実装の記述をコピーする NULL で終わる ASCII 文字列です。文字列 (長さが 256 文字までの) は任意の文字を含むことができますが、発売元が制御文字や書式制御文字を含むときは警告を受けます。アプリケーションで表示されるステータス メッセージによく使われます (切り詰められることもあります)。szSystemStatus
Windows ソケット DLL が関連ステータスまたは構成情報をコピーする NULL で終わる ASCII 文字列です。情報がユーザーやサポート スタッフにとって有用なときだけ、Windows ソケット DLL でこのフィールドを使用してください。szDescription フィールドの拡張として扱うことは適切ではありません。iMaxSockets
1 つのプロセスが開く可能性のあるソケットの最大数。Windows ソケットの実装では、任意のプロセスに割り当てるためにソケットのグローバル プールが用意されています。また、ソケットにプロセスごとのリソースを割り当てることもできます。その数は Windows ソケット DLL やネットワーク ソフトウェアの構成を反映します。アプリケーションのプログラマは、アプリケーションで Windows ソケット実装を使用できるかを端的に示す値としてこの数を使用できます。たとえば、X Windows のサーバーは最初の起動時に iMaxSockets をチェックできます。iMaxSockets の数が 8 未満である場合、アプリケーションはエラー メッセージを表示して、ユーザーにネットワーク ソフトウェアの再構成を指示します。このような場合は、szSystemStatus テキストを使用できます。ほかの Windows ソケットが同時に起動されている可能性もあるので、特定のアプリケーションが実際に iMaxSockets のソケットを割り当てることができるかどうかは保証されません。iMaxUdpDg
Windows ソケット アプリケーションにより送受できる最も大きいユーザー データグラム プロトコル (UDP: User Datagram Protocol) データグラムのバイト サイズです。実装に制限を設定しないときは iMaxUdpDg は 0 になります。Berkeley Sockets の多くの実装には、UDP データグラム上では 8192 バイトの暗黙の制限があります (必要なときはフラグメント化されます)。たとえば、Windows ソケットの実装はフラグメント再構築バッファの確保の方法に従って制限を設けます。Windows ソケットの実装に準拠する iMaxUdpDg の最小値は 512 です。iMaxUdpDg の値に関係なく、ネットワークの MTU (Maximum Transmission Unit) を超えるブロードキャスト データグラムの送信はお薦めできません。Windows ソケット API は MTU を検出する機構は提供していませんが、512 バイト以上必要です。lpVendorInfo
発売元固有のデータ構造体への Far ポインタです。(提供されている場合の) 構造体定義は Windows ソケット仕様のスコープを超えています。
メモ : |
---|
MFC では、WSADATA 構造体が AfxSocketInit 関数によって返されます。AfxSocketInit 関数は、InitInstance 関数で呼び出されます。この構造体をプログラム中で格納して、必要に応じてその情報を再使用できます。 |
必要条件
ヘッダー : winsock2.h