CAsyncSocket::Create
更新 : 2007 年 11 月
ソケット オブジェクトを構築後、Create メンバ関数を呼び出して、Windows ソケットを作成し、オブジェクトに関連付けます。
BOOL Create(
UINT nSocketPort = 0,
int nSocketType = SOCK_STREAM,
long lEvent = FD_READ | FD_WRITE | FD_OOB | FD_ACCEPT | FD_CONNECT | FD_CLOSE,
LPCTSTR lpszSocketAddress = NULL
);
パラメータ
nSocketPort
ソケットで使う既知のポート。Windows ソケットにポートを選択させるときは 0 を指定します。nSocketType
SOCK_STREAM または SOCK_DGRAM。lEvent
アプリケーションが必要とするネットワーク イベントの組み合わせを指定するビットマスク。FD_READ 読み込み準備完了通知の受信を要求。
FD_WRITE 書き込み準備完了通知の受信を要求。
FD_OOB 帯域外のデータ到達通知の受信を要求。
FD_ACCEPT 接続確認通知の受信を要求。
FD_CONNECT 接続結果通知の受信を要求。
FD_CLOSE ソケットがピアから閉じられたときの通知の受信を要求。
lpszSockAddress
接続されたソケットのネットワーク アドレスをドット区切りの数値 ("128.56.22.8" など) として保持する文字列へのポインタです。このパラメータに NULL 文字列を指定した場合、CAsyncSocket インスタンスは、すべてのネットワーク インターフェイス上でクライアントのアクティビティを待機します。
戻り値
正常終了した場合は 0 以外を返します。それ以外の場合は 0 を返します。GetLastError を呼び出すと、固有のエラー コードを取得できます。このメンバ関数では、次のエラーが発生します。
WSANOTINITIALISED この API を使う前に AfxSocketInit の呼び出しが正常終了していることが必要です。
WSAENETDOWN Windows ソケットの実装が、ネットワーク サブシステムの異常を検出しました。
WSAEAFNOSUPPORT 指定したアドレス ファミリはサポートしていません。
WSAEINPROGRESS 実行中の Windows ソケット呼び出しがブロッキングされています。
WSAEMFILE 利用できるファイル記述子がありません。
WSAENOBUFS 利用できるバッファ領域がありません。ソケットは作成できません。
WSAEPROTONOSUPPORT 指定したポートはサポートしていません。
WSAEPROTOTYPE 指定したポートの型が正しくありません。
WSAESOCKTNOSUPPORT 指定したソケットの方は、このアドレス ファミリではサポートしていません。
解説
Create は Socket を呼び出し、これが成功すると、Bind を呼び出してソケットを特定のアドレスにバインドします。サポートされているソケット型は次のとおりです。
SOCK_STREAM 連続した、信頼性のある、全二重の、接続ベースのバイト ストリームが用意されます。インターネット アドレス ファミリでは、伝送制御プロトコル (TCP) を使います。
SOCK_DGRAM データグラムをサポートします。データグラムは、接続を必要とせず、固定最大長 (通常は短い) の信頼性の低いパケットです。インターネット アドレス ファミリでは、ユーザー データグラム プロトコル (UDP: User Datagram Protocol) を使います。
メモ : Accept メンバ関数には、新しい空の CSocket オブジェクトへの参照をパラメータとして渡します。Accept を呼び出す前に、このオブジェクトを構築します。このソケット オブジェクトがスコープ外に出ると、接続は閉じられます。このソケット オブジェクトを新規作成するときに、Create を呼び出さないでください。
ストリーム ソケットとデータグラム ソケットの詳細については、「Windows ソケット : 予備知識」、「Windows ソケット : ポートとソケット アドレス」、および「Windows Sockets 2 API」を参照してください。
必要条件
ヘッダー : afxsock.h