接続を受け入れる
更新日2006年10月03日
参照 http://msdn.microsoft.com/library/default.asp?url=/library/en-us/winsock/winsock/accepting_a_connection.asp

一旦ソケットが接続のためにリスニングします、 プログラムはソケットでの接続要求をハンドルしなければなりません。

ソケットでの接続を受け入れます

  1. テンポラリSOCKETオブジェクト作成は接続受け入れのためにAcceptSocketを呼び出します。
    
    SOCKET AcceptSocket;
    
    
  2. 接続要求をチェックする連続ループを作成して下さい。 接続要求が起こるならば、要求を取り扱うaccept関数を呼びます。
    
    SOCKET ClientSocket = INVALID_SOCKET;
    
    /*
     * クライアントソケットを受け入れ
     */
    ClientSocket = accept(ListenSocket, NULL, NULL);
    if (ClientSocket == INVALID_SOCKET)
    {
        printf( "accept failed: %d\n", WSAGetLastError());
        closesocket(ListenSocket);
        WSACleanup();
        return 1;
    }
     
    
  3. クライアント接続が受け入れられた時、オリジナルソケットを閉じましょう、 テンポラリソケットよりオリジナルソケットへ転送制御して下さい、 そして、新しい接続についてチェックするのを停止して下さい。
    
    /*
     * 不要になったサーバソケット
     */
    closesocket(ListenSocket);
    
    

次のステップ: ソケットへ接続