ソケットは、名前のない状態で作成されます。ソケットにアドレスがバインドされるまでは、遠隔プロセスはソケットを参照できません。通信プロセスは、アドレスを介して接続されます。インターネットファミリでは、接続はローカルアドレス、リモートアドレス、ローカルポート、およびリモートポートから構成されます。protocol、local address、local port、foreign address、foreign port のような重複した順序セットは指定できません。
bind(3SOCKET) 呼び出しを使用すると、プロセスはソケットのローカルアドレスを指定できます。これは、local address、local port というセットになります。connect(3SOCKET) と accept(3SOCKET) は、アドレスの対のリモート側を決定することにより、ソケットの関連付けを完了します。bind(3SOCKET) 呼び出しは次のように使用します。
bind (s, name, namelen);
ソケットハンドルは s です。バインドされる名前は、サポートするプロトコルによって解釈されるバイト列です。インターネットファミリ名には、インターネットアドレスとポート番号が含まれます。
次の例は、インターネットアドレスのバインドを示しています。
#include <sys/types.h> #include <netinet/in.h> ... struct sockaddr_in6 sin6; ... s = socket(AF_INET6, SOCK_STREAM, 0); bzero (&sin6, sizeof (sin6)); sin6.sin6_family = AF_INET6; sin6.sin6_addr.s6_addr = in6addr_arg; sin6.sin6_port = htons(MYPORT); bind(s, (struct sockaddr *) &sin6, sizeof sin6);
アドレス sin6 の内容は、インターネットアドレスのバインドについて説明した 「アドレスのバインド」で説明しています。