コネクションレス型ソケットの作成

コネクションレス型ソケットは、データを転送するための接続を確立しません。 その代わり、 サーバー・アプリケーションはクライアントが要求を送信できるよう、自分の名前を指定します。

コネクションレス型ソケットは、TCP/IP の代わりにユーザー・データグラム・プロトコル (UDP) を使用します。

以下の図は、コネクションレス型ソケット設計用の例で使用される、ソケット API のクライアント/サーバーの関係を表しています。

コネクションレス型プロトコル用ソケット API のクライアント/サーバー関係

ソケットのイベントのフロー: コネクションレス型サーバー

以下のソケット呼び出しのシーケンスは、 図およびこの後のプログラム例の説明となっています。 これはまた、 コネクションレス型設計におけるサーバーとクライアント・アプリケーションの関係の説明ともなっています。 それぞれのフローには、特定の API の使用上の注意へのリンクが含まれています。 特定の API の使用に関する詳細な説明を参照するために、 これらのリンクを使用できます。 コネクションレス型サーバーの最初の例は、以下の API 呼び出しのシーケンスを使用します。

  1. socket() API が、端点を表すソケット記述子を戻します。ステートメントは、このソケットのためにインターネット・プロトコル バージョン 6 アドレス・ファミリー (AF_INET6) と UDP トランスポート (SOCK_DGRAM) を使用することも示します。
  2. ソケット記述子が作成された後、bind() API が、 ソケットの固有名を取得します。 この例では、ユーザーは s6_addr をゼロに設定します。これは、UDP ポート 3555 が、システム上のすべての IPv4 および IPv6 アドレスにバインドされるということです。
  3. サーバーが、データを受信するために recvfrom() API を使用します。 recvfrom() API は、データの到着を無期限に待機します。
  4. sendto() API がデータをクライアントに送り返します。
  5. close() API が、 オープンしているソケット記述子をすべて終了させます。

ソケットのイベントのフロー: コネクションレス型クライアント

コネクションレス型クライアントの 2 番目の例は、以下の API 呼び出しのシーケンスを使用します。

  1. socket() API が、端点を表すソケット記述子を戻します。ステートメントは、このソケットのためにインターネット・プロトコル バージョン 6 アドレス・ファミリー (AF_INET6) と UDP トランスポート (SOCK_DGRAM) を使用することも示します。
  2. クライアントのプログラム例では、 getaddrinfo() API を使用して、サーバーの IP アドレ スを取得します。 getaddrinfo() は、有効な IPv6 アドレス・ストリング として渡されるサーバー・ストリング、またはサーバーのホスト名を 処理します。
  3. sendto() API を使用して、 データをサーバーに送信します。
  4. recvfrom() API を使用して、 サーバーからデータを受信します。
  5. close() API が、 オープンしているソケット記述子をすべて終了させます。