ソケットの接続は、通常は対称的ではありません。1 つのプロセスが通常はサーバとして動作し、もう 1 つのプロセスはクライアントとして動作します。サーバは、以前に合意しているパスまたはアドレスにソケットを結合します。その後、ソケットでブロッキングします。SOCK_STREAM ソケットでは、サーバは listen(3SOCKET) を呼び出し、待ち行列に並べられる接続要求の個数を指定します。
クライアントは connect(3SOCKET) を呼び出して、サーバのソケットへの接続を開始します。UNIX ドメインの呼び出しは、次のようになります。
struct sockaddr_un server; ... connect (sd, (struct sockaddr_un *)&server, length); |
インターネットドメインの呼び出しは、次のようになります。
struct sockaddr_in; ... connect (sd, (struct sockaddr_in *)&server, length); |
クライアントのソケットが接続呼び出しの時点で結合されていないと、自動的に名前が選択されてソケットに結合されます。
SOCK_STREAM ソケットでは、サーバは accept(3SOCKET) を呼び出して接続を完了します。accept(3SOCKET) は、特定の接続だけに有効である新しいソケット記述子を戻します。サーバは、一度に複数の SOCK_STREAM 接続をアクティブにできます。