ソケット・サブルーチン

目的

通信のエンドポイントを作成し、記述子を返します。

ライブラリー

標準 C ライブラリー (libc.a)

構文

#include <sys/types.h>
#include <sys/socket.h>
#include <sys/socketvar.h>
int socket ( AddressFamily,  Type,  Protocol)
int AddressFamily, Type, Protocol;

説明

Socket サブルーチンは、指定された AddressFamily および指定されたタイプにソケットを作成します。 プロトコルは、システムによって指定または割り当てることができます。 プロトコルが未指定 (値 0) のままである場合、システムは、要求されたソケット・タイプをサポートするために使用できるアドレス・ファミリー内のプロトコルから適切なプロトコルを選択します。

ソケット サブルーチンは、ソケット上で作動する後続のサブルーチンで使用できる記述子 (整数) を戻します。

ソケット・レベル・オプションは、ソケット操作を制御します。 getsockopt および setsockopt サブルーチンは、 /usr/include/sys/socket.h ファイルに定義されているこれらのオプションを取得および設定するために使用されます。

パラメーター

項目 説明
AddressFamily 後のソケット操作で指定されたアドレスが解釈されるアドレス・ファミリーを指定します。 /usr/include/sys/socket.h ファイルには、アドレス・ファミリーの定義が入っています。 よく使用されるファミリーは以下のとおりです。
AF_UNIX
オペレーティング・システムのパス名を示します。
AF_INET
ALPA インターネット・アドレスを示します。
AF_INET6
IPv6 アドレスと IPv4 アドレスを示します。
AF_NS (F)
XEROX ネットワーク・システム・プロトコルを示します。
F_ バイパス
カーネル・バイパス・プロトコル・ドメイン (例えば、 InfiniBand ドメイン上で動作するプロトコル) を示します。
Type 通信のセマンティクスを指定します。 /usr/include/sys/socket.h ファイルは、ソケット・タイプを定義します。 オペレーティング・システムは、以下のタイプをサポートします。
SOCK_STREAM
アウト・オブ・バンド・データの伝送メカニズムを使用して、シーケンス化された両方向バイト・ストリームを提供します。
SOCK_DGRAM
固定最大長 (通常は短) のコネクションレス・メッセージであるデータグラムを提供します。
SOCK_RAW
内部ネットワーク・プロトコルおよびインターフェースへのアクセスを提供します。 このタイプのソケットは、root ユーザー、または CAP_NUMA_ATTACH 機能を持つ非 root ユーザーのみが使用できます。 (非 root ロー・ソケット・アクセスの場合、CAP_NUMA_ATTACH 機能と CAP_PROPAGATE は chuser コマンドを使用して割り当てられます)。
SOCK_SEQPACKET
情報のシーケンス化された、信頼性の高い、重複しないフローを提供します。 このタイプのソケットは、Stream Control Transmission Protocol および Reliable Datagram Sockets (RDS) プロトコルの場合に、UDP スタイルのソケット作成に使用されます。
プロトコル ソケットで使用する特定のプロトコルを指定します。 プロトコル パラメーターに 0 を指定すると、 ソケット サブルーチンはデフォルトで、要求されたタイプの戻りソケットの標準プロトコルになります。 SCTP ソケットの場合、プロトコル・パラメーターは IPPROTO_SCTP です。 RDS ソケットの場合、 Protocol パラメーターは BYPASSPROTO_RDS です。

戻り値

正常終了すると、 ソケット サブルーチンは整数 (ソケット・ディスクリプター) を戻します。

ソケット サブルーチンが失敗すると、サブルーチン・ハンドラーは以下の関数を実行します。

  • 呼び出したプログラムに-11を返す。
  • 特定のエラーを示すエラー・コードを エラー番号 グローバル変数に移動します。 エラー番号 変数の詳細については、 エラー通知オブジェクト・クラスを参照してください。

エラー・コード

以下のいずれかのエラーが発生すると、 ソケット サブルーチンは失敗します。

エラー 説明
EAFNOSUPPORT 指定されたアドレス・ファミリーのアドレスは、このソケットでは使用できません。
EMFILE プロセスごとの記述子テーブルがいっぱいです。
ENOBUFS 呼び出しを完了するための十分なリソースがシステムにありませんでした。
ESOCKTNOSUPPORT 指定されたアドレス・ファミリー内のソケットはサポートされていません。

以下のプログラム・フラグメントは、 ソケット サブルーチンを使用して、マシン上で使用するデータグラム・ソケットを作成する方法を示しています。

s = socket(AF_UNIX, SOCK_DGRAM,0);

実行の特性

ソケット・サブルーチンは、基本オペレーティング・システム (BOS) ランタイムの一部です。

ソケット・アプリケーションは、 COMPAT_43 を定義してコンパイルすることができます。 これにより、 sockaddr 構造体は BSD 4.3 と互換性を持ちます。 詳しくは、 socket.hを参照してください。