JavaScript is required to for searching.
ナビゲーションリンクをスキップ
印刷ビューの終了
プログラミングインタフェースガイド     Oracle Solaris 10 1/13 Information Library (日本語)
search filter icon
search icon

ドキュメントの情報

はじめに

1.  メモリーと CPU の管理

2.  リモート共有メモリー API (Solaris クラスタ用)

3.  セッション記述プロトコル API

4.  プロセススケジューラ

5.  近傍性グループ API

6.  入出力インタフェース

7.  プロセス間通信

8.  ソケットインタフェース

9.  XTI と TLI を使用したプログラミング

10.  パケットフィルタリングフック

11.  トランスポート選択と名前からアドレスへのマッピング

12.  リアルタイムプログラミングと管理

13.  Solaris ABI と ABI ツール

A.  UNIX ドメインソケット

ソケットの作成

ローカル名のバインド

コネクションの確立

索引

ローカル名のバインド

ソケットは、その作成時には名前がありません。アドレスがソケットにバインドされるまで、リモートプロセスはソケットを参照できません。通信プロセスは、アドレスを介して接続されます。UNIX ファミリでは、接続は、通常 1 つまたは 2 つのパス名からなります。UNIX ファミリのソケットは、必ずしも名前にバインドされる必要はありません。バインドされると、local pathnameforeign pathname などの順序セットは重複して存在できません。パス名では、既存のファイルを参照できません。

bind(3SOCKET) 呼び出しを使用すると、プロセスはソケットのローカルアドレスを指定できます。これによって、local pathname 順序セットが作成され、一方、connect(3SOCKET) および accept(3SOCKET) はアドレスのリモート側を固定することによってソケットの関連付けを完了します。bind(3SOCKET) は次のように使用します。

bind (s, name, namelen);

s はソケットハンドルです。バインド名は、バイト文字列で、サポートするプロトコル (複数も可) がこれを解釈します。UNIX ファミリ名には、パス名とファミリが含まれます。例では、UNIX ファミリソケットに /tmp/foo という名前をバインドしています。

#include <sys/un.h>
 ...
struct sockaddr_un addr;
 ...
strcpy(addr.sun_path, "/tmp/foo");
addr.sun_family = AF_UNIX;
bind (s, (struct sockaddr *) &addr,
        strlen(addr.sun_path) + sizeof (addr.sun_family));

この例では、AF_UNIX ソケットアドレスの大きさを判断するときには NULL バイトがカウントされないので、strlen(3C) を使用しています。

addr.sun_path で参照されるファイル名は、システムファイルの名前空間でソケットとして作成されます。呼び出し側は、addr.sun_path が作成されるディレクトリに書き込み許可を持っている必要があります。このファイルは、不要になったときに呼び出し側が削除してください。AF_UNIX ソケットを削除するには、unlink(1M) を使用します。