ソケットのバインド

サーバーがクライアント接続を受け入れるには、システム内のネットワーク アドレスにバインドされている必要があります。 次のコードは、既に作成されているソケットを IP アドレスとポートにバインドする方法を示しています。 クライアント アプリケーションは、IP アドレスとポートを使用してホスト ネットワークに接続します。

ソケットをバインドするには

sockaddr 構造体は、アドレス ファミリ、IP アドレス、およびポート番号に関する情報を保持します。

バインド関数を呼び出し、getaddrinfo 関数から返された作成されたソケットsockaddr 構造体をパラメーターとして渡します。 一般的なエラーを確認します。

    // Setup the TCP listening socket
    iResult = bind( ListenSocket, result->ai_addr, (int)result->ai_addrlen);
    if (iResult == SOCKET_ERROR) {
        printf("bind failed with error: %d\n", WSAGetLastError());
        freeaddrinfo(result);
        closesocket(ListenSocket);
        WSACleanup();
        return 1;
    }

バインド関数が呼び出されると、getaddrinfo 関数によって返されるアドレス情報は不要になります。 freeaddrinfo 関数は、このアドレス情報に対して getaddrinfo 関数によって割り当てられたメモリを解放するために呼び出されます。

    freeaddrinfo(result);

次のステップ: ソケットでリッスンする

Winsock を使用したはじめに

Winsock サーバー アプリケーション

サーバーのソケットの作成